如何使用向量重命名R数据帧中的列以指示OLD列名称?

时间:2017-04-20 23:10:20

标签: r dplyr

我想重命名R数据框中的列,而我要重命名的现有列名值是在向量中。我不知道它是什么,因为它是根据用户输入计算的。

我试过这个,但它没有用......

  > head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> myOldNameVector<-c("Petal.Width")
> head(rename(iris, myNewName = myOldNameVector))
Error: Unknown variables: myOldNameVector.
> 

任何人都知道正确的咒语是什么?谢谢!

4 个答案:

答案 0 :(得分:2)

dplyr 0.6.0 change a few things;我想很快就会:

library(dplyr)
packageVersion("dplyr")
# [1] ‘0.5.0.9002’
myOldNameVector<-c("Petal.Width")
head(rename(iris, myNewName = !!as.name(myOldNameVector)))
#   Sepal.Length Sepal.Width Petal.Length myNewName Species
# 1          5.1         3.5          1.4       0.2  setosa
# 2          4.9         3.0          1.4       0.2  setosa
# 3          4.7         3.2          1.3       0.2  setosa
# 4          4.6         3.1          1.5       0.2  setosa
# 5          5.0         3.6          1.4       0.2  setosa
# 6          5.4         3.9          1.7       0.4  setosa

答案 1 :(得分:1)

您可以使用rename_

library(dplyr)

iris %>% 
  rename_("New_Petal_Width" = "Petal.Width")

myOldNameVector <- c("Petal.Width")
iris %>% 
    rename_("New_Petal_Width" = myOldNameVector)

答案 2 :(得分:1)

或使用colnames变量:

Named

答案 3 :(得分:0)

如何使用names()功能呢?

myOldNameVector<-c("Petal.Width", "Sepal.Width")
myNewNameVector <- c("Name1", "Name2")

names(iris)[names(iris) %in% myOldNameVector] <- myNewNameVector

head(iris)
#  Sepal.Length Name1 Petal.Length Name2 Species
#1          5.1   3.5          1.4   0.2  setosa
#2          4.9   3.0          1.4   0.2  setosa
#3          4.7   3.2          1.3   0.2  setosa
#4          4.6   3.1          1.5   0.2  setosa
#5          5.0   3.6          1.4   0.2  setosa
#6          5.4   3.9          1.7   0.4  setosa