我正在学习R,并且正在尝试了解索引属性。我似乎无法理解为什么以下用于更改列名的代码不起作用:
state.all <- as.data.frame(state.x77)
head(state.all)
state.all$States <- rownames(state.all)
rownames(state.all) <- NULL
# why the following row does not work?
names(state.all["States"]) <- "Test"
colnames(state.all)
这可行:
state.all <- as.data.frame(state.x77)
head(state.all)
state.all$States <- rownames(state.all)
rownames(state.all) <- NULL
# This work
names(state.all)[which(colnames(state.all)=="States")] <- "Test"
colnames(state.all)
在第一个示例中,该函数还不能覆盖列名吗?与本地和全球环境有关吗?
谢谢!
答案 0 :(得分:0)
您要尝试替换第9列的名称。
如果名为“ States”的列(如果有),则表达式which(colnames(state.all)=="States")
产生索引,然后获取该索引并替换名称向量中的值。
表达式state.all["States"]
仅返回此列的值,因此当然不会发生任何事情。
我建议使用类似colnames(state.all)[which(colnames(state.all)=="States")] <- "Test"
之类的东西。