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
有人可以解释为什么会这样吗?谢谢!
答案 0 :(得分:4)
如attach
的文档中所述:
实际上并未附加数据库。而是在搜索路径上创建新环境,并将列表的元素(包括数据框的列)或保存文件或环境中的对象复制到新环境中。如果使用
<<-
或assign
分配给附加数据库,则只更改附加副本,而不是原始对象。 (正常分配会在用户的工作区中放置修改后的版本:请参阅示例。)因此attach
会导致混淆。