我试图一次更改数据框的三个列名称。
当我更改一列名称时,我的代码运行良好:
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)
如果有人能提供帮助,我将不胜感激。
如果您知道列号,您可以简单地执行以下操作:
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)
| 归档时间: |
|
| 查看次数: |
14004 次 |
| 最近记录: |