无法通过在函数参数中建立索引来分配列名

时间:2018-12-16 09:25:16

标签: r

我正在学习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)

在第一个示例中,该函数还不能覆盖列名吗?与本地和全球环境有关吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您要尝试替换第9列的名称。 如果名为“ States”的列(如果有),则表达式which(colnames(state.all)=="States")产生索引,然后获取该索引并替换名称向量中的值。 表达式state.all["States"]仅返回此列的值,因此当然不会发生任何事情。

我建议使用类似colnames(state.all)[which(colnames(state.all)=="States")] <- "Test"之类的东西。