我知道我可以通过以下方式更改data.frame列名:
colnames(df)[3] <- "newname"
但是可能存在我想要更改的列不在第3位的情况。有没有办法按名称查找列并更改它?像这样......
colnames(df)[,"oldname"] <- "newname"
顺便说一句,我已经尝试过这段代码而且我不断获得incorrect number of subscripts on matrix
。
感谢。
答案 0 :(得分:16)
colnames(df)[colnames(df)=="oldname"] <- "newname"
或仅names
names(df)[names(df)=="oldname"] <- "newname"
还有各种函数可以重命名包中的列。
答案 1 :(得分:5)
colnames(df)[colnames(df)=="oldname"] <- "newname"
或强>
names(df)[names(df)=="oldname"] <- "newname"
(因为names
和colnames
等同于数据框)
或
library(reshape)
df <- rename(df,c(oldname="newname"))
答案 2 :(得分:3)
一种更通用的方法,将在同一个字符位置使用“new”替换任何当前名称开头的所有“旧”:
names(df) <- sub("^old", "new", names(df) )