如何一次更改多个列名称?

HW-*_*ist 3 r dataframe

我试图一次更改数据框的三个列名称。

当我更改一列名称时,我的代码运行良好:

    names(df)[names(df)== "name1")] <- "name12"  
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在一个命令中更改三个列名称时,发生了错误:

    names(df)[names(df)= c("name1, "name2", "name3")] <- c("name12", "name22", "name32")  
Run Code Online (Sandbox Code Playgroud)

如果有人能提供帮助,我将不胜感激。

jay*_*.sf 5

如果您知道列号,您可以简单地执行以下操作:

names(df)[1:3] <- c("name12", "name22", "name32")
Run Code Online (Sandbox Code Playgroud)

更安全的方法(因为顺序无关紧要)是使用命名list(或使用向量c),match它具有当前名称和na.omit。应过滤该列表以查找实际存在于%in%当前名称的项目。

lst <- list(FOO="gear", BAR="fAiL", BAZ="am", QUX="mpg")

names(mtcars)
# [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"
   
names(mtcars)[na.omit(match(lst, names(mtcars)))] <- names(lst)[lst %in% names(mtcars)] 

names(mtcars)
# [1] "QUX"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "BAZ"  "FOO"  "carb"
Run Code Online (Sandbox Code Playgroud)

似乎对以下情况具有很强的抵抗力:

lst <- list(none='sense', li='st'); lst <- NULL; lst <- NA
Run Code Online (Sandbox Code Playgroud)