按名称而不是按数字更改R中的列名

Geo*_*off 2 r

我在R中有一个有很多列的表.我想更改列名称.我发现:

colnames(table)[123] <- "newName"
Run Code Online (Sandbox Code Playgroud)

将第123列更改为名称"newName".但要实现这一点,我需要找到名为"oldName"的列号.我在考虑这样的事情:

colnames(table)["oldName"] <- "newName"
Run Code Online (Sandbox Code Playgroud)

但那没用.那怎么可以这样做呢?

tal*_*lat 5

使用dplyr的rename功能非常简单:

library(dplyr)
rename(mtcars, cylinders = cyl)
Run Code Online (Sandbox Code Playgroud)

这将在数​​据集"mtcars"中将列"cyl"重命名为"cylinder".

评论后编辑:

如果要重命名多个列,可以执行(不使用dplyr):

names(mtcars)[names(mtcars) %in% c("mpg", "cyl", "hp")] <- c("miles", "cylinders", "horsepower")
names(mtcars)
# [1] "miles"      "cylinders"  "disp"       "horsepower" "drat"      
# [6] "wt"         "qsec"       "vs"         "am"         "gear"      
#[11] "carb" 
Run Code Online (Sandbox Code Playgroud)

所以你只需要1行来重命名多个列.当然,您可以将这些名称存储在矢量中.


注意人可能关注:虽然这是事实,plyr有一个rename功能,dplyr 也有一个rename在其目前的CRAN版本0.3.0.2功能.它在dplyr介绍中有描述,如果你正在运行当前版本,你可以输入?dplyr::rename.如果仔细观察,你甚至可以分辨出哪一个被使用,因为plyr和dplyr的重命名函数之间存在细微差别:在plyr中,它会plyr::rename(mtcars, c("oldName" = "newName"))在dplyr中(就像在我的答案中一样)dplyr::rename(mtcars, newName = oldName).


OP评论后编辑:

我无法重现您描述的错误.这是我理解你做的,但它在我的情况下没有任何错误或意外行为:

df <- data.frame(DE9 = 1:2, code9 = 3:4)
df
#  DE9 code9
#1   1     3
#2   2     4
dplyr::rename(df, newname = DE9)
#  newname code9
#1       1     3
#2       2     4
Run Code Online (Sandbox Code Playgroud)