请选择 进入手机版 | 继续访问电脑版
楼主: 楚湘斜云
15311 6

[问答] no.readonly=TRUE是什么意思?有什么作用? [分享]

  • 0关注
  • 0粉丝

高中生

55%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
229 点
帖子
21
精华
0
在线时间
23 小时
注册时间
2013-6-3
最后登录
2019-12-17

楚湘斜云 发表于 2016-4-2 17:32:03 |显示全部楼层
最近在看《R in action》,讲作图的时候,有这么一段:
opar <- par(no.readonly=TRUE)
par(lty=2, pch=17)           
plot(dose, drugA, type="b")  
par(opar)     

在输入opar <- par(no.readonly=TRUE) 之后,页面并没有返回什么操作结果,然后我只输入中间两段,作出来的图也是一样的,所以不明白这个no.readonly=TRUE的作用是什么?有什么意义?
关键词:是什么意思 READ ONLY Rue Don action

stata SPSS
jiangbeilu 学生认证  发表于 2016-4-2 19:22:51 |显示全部楼层
  1. set.seed(2015)
  2. xx <- rnorm(100)
  3. plot(xx)  # ①
  4. # 保存原有的设置
  5. opar <- par(no.readonly=TRUE)
  6. # 增加新的作图设置
  7. par(lty=2, pch=17)           
  8. plot(xx) # ②
  9. # 复原设置
  10. par(opar)  
  11. plot(xx)  # ③
  12. # ①与③的图是一样的
复制代码
已有 1 人评分热心指数 收起 理由
求证1加1 + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

回复

使用道具 举报

楚湘斜云 发表于 2016-4-2 22:06:51 |显示全部楼层
jiangbeilu 发表于 2016-4-2 19:22
谢谢!按照我的理解,no.readonly=TRUE就是保存当前设置的意思对吧?
不过,我刚刚在你回复的基础上改动了一下,感觉又不太理解了,改动如下:
set.seed(2015)
xx<-rnorm(100)
par(pch=17,col="red")
plot(xx) #①
#保存原有设置
opar<-par(no.readonly=TRUE)
#增加新的作图设置
par(pch=15,col="blue")
plot(xx)  #②
#复原设置
par(opar)
plot(xx)  #③
这三张图的显示分别如下,如果是保存当前设置,那么第三张图跟第一张图应该是一样的,但两张图的颜色并不一致,请问这是为什么呢?

一①

一①

二②

二②

三③

三③



①

③

②
回复

使用道具 举报

jiangbeilu 学生认证  发表于 2016-4-3 07:05:30 |显示全部楼层
par()需要先保存,再设置,然后再恢复。如果不保存初始设置,是没办法恢复到原来的。由最后的par1和par2体现出来:
  1. par()$pch
  2. par()$col
  3. par(no.readonly=TRUE)$pch
  4. par(no.readonly=TRUE)$col
  5. # 在没有经过任何set之前,保存一个par1
  6. opar1<-par(no.readonly=TRUE)
  7. #################################
  8. # 开始 保存之后的第一次变动
  9. set.seed(2015)
  10. xx<-rnorm(100)
  11. par(pch=17,col="red")
  12. # 看opar1有没有变
  13. opar1$pch
  14. opar1$col
  15. # 可以看出经过par设置之后,opar1是不随之变动的
  16. # 作图,pch=17,col="red"
  17. plot(xx) #①
  18. #保存原有设置
  19. opar2<-par(no.readonly=TRUE)
  20. ?dev.off()
  21. plot(xx)
  22. #增加新的作图设置
  23. par(pch=15,col="blue")
  24. plot(xx)  #②
  25. #复原设置,par1,有效
  26. par(opar1)

  27. plot(xx)  #③
  28. par(opar1)
  29. plot(xx)  #④
复制代码
回复

使用道具 举报

虾卤 发表于 2016-8-25 11:02:53 |显示全部楼层
?par 可以看到对这个参数的说明。
no.readonly       
logical; if TRUE and there are no other arguments, only parameters are returned which can be set by a subsequent par() call on the same device.
尝试翻译下~
no.readonly
逻辑值;如果它被设置为TRUE,同时par()方法内没有其他参数的话,调用par()方法会返回一个对象,仅包含par()方法的参数值集合。之后可以在同一个设备上使用par()方法访问这个对象。

回复

使用道具 举报

沉默的狙击手 发表于 2016-8-30 18:19:02 |显示全部楼层
jiangbeilu 发表于 2016-4-3 07:05
par()需要先保存,再设置,然后再恢复。如果不保存初始设置,是没办法恢复到原来的。由最后的par1和par2体现 ...
第29行,如果是par(opar2) 然后执行第30行的命令,出来的图pch=17(和之前设置的样式一样),但是col却变成了black(而不是之前设置的red)。
很奇怪。
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 鼓励积极发帖讨论

总评分: 论坛币 + 10   查看全部评分

回复

使用道具 举报

KEKE888 发表于 2019-2-5 12:51:23 |显示全部楼层
沉默的狙击手 发表于 2016-8-30 18:19
第29行,如果是par(opar2) 然后执行第30行的命令,出来的图pch=17(和之前设置的样式一样),但是col却变成 ...
我也出现了同样的情况
请问问题解决了吗?HELP!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2021-1-24 08:35