热线电话:13121318867

登录
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)

发表评论

暂无数据
推荐帖子