2018-10-19
阅读量:
2110
R语言中,attach与detach,及with的区别
问题描述
R语言中,对数据框中的数据的进行操作时,为了避免重复地键入对象名称,可使用attach、detach或with。那么attach和with有什么区别呢?
解答
1、attach()是对what添加路径索引,避免重复输入what名称。
attach(what, pos = 2L, name = deparse(substitute(what), backtick=FALSE), warn.conflicts = TRUE)
what:数据框或列表;
pos=2L:添加的路径存储的位置,一般默认即可。在对多个数据添加索引时,此位置会变成3L,4L,5L...detach()撤销索引路径时,会撤销对应位置的索引储存,具体例子见后;
name:不懂,遇见需要的情况再补充;
backtick=FALSE:反引号,经过测试,该参数固定为FALSE不可调,再调用索引时会用到;
warn.conflicts:是否打印警告。
2、detach()是撤销attach()建立的路径索引,常与attach()配合使用。
attach(onedata.frame)
The following objects are masked _by_ .GlobalEnv:
age, name
> age
[1] 20 30 40 50
> name
[1] "Zhangshan" "Lisi" "Wangwu" "Zhaoliu"
> detach(onedata.frame)
> name
错误: 找不到对象'name'
3、with()函数
with(data, expr, ...)
表达式,大括号{}之间的语句都只针对data执行,但如果大括号中只有一句的话,则省略大括号。
>with(onedata.frame,{
name
})
[1] Zhangshan Lisi Wangwu Zhaoliu
Levels: Lisi Wangwu Zhangshan Zhaoliu
用with有个问题就是里面设置的变量在外部无法访问:
> with(onedata.frame,{name1<-name})
> name1
错误: 找不到对象'name1'
解决办法就是使用<<-赋值符号
> with(onedata.frame,{name1<<-name})
> name1
[1] Zhangshan Lisi Wangwu Zhaoliu
Levels: Lisi Wangwu Zhangshan Zhaoliu
0.0000
0
0
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论