附加()/ detach()中的R代码不起作用

时间:2016-08-15 00:27:29

标签: r

age <- seq(10, 100, 10)
df <- data.frame(age)
df

这不起作用

df$agegroup <- vector(mode = "character", length = nrow(df))
attach(df)
agegroup[age >= 10 & age < 20] <- "10To20"
detach(df)
df$agegroup

这很好用

df$agegroup <- vector(mode = "character", length = nrow(df))
df$agegroup[df$age >=10 & df$age < 20] <- "10To20"
df$agegroup

有人可以解释为什么会这样吗?谢谢!

1 个答案:

答案 0 :(得分:4)

attach的文档中所述:

  

实际上并未附加数据库。而是在搜索路径上创建新环境,并将列表的元素(包括数据框的列)或保存文件或环境中的对象复制到新环境中。如果使用<<-assign分配给附加数据库,则只更改附加副本,而不是原始对象。 (正常分配会在用户的工作区中放置修改后的版本:请参阅示例。)因此attach会导致混淆。