用变量重命名列名

时间:2017-05-23 19:25:42

标签: r dplyr

我想使用新名称重命名特定列,该列在dplyr中作为变量出现。

newName = paste0('nameY', 2017)

我试过的是

iris %>% 
    rename(newName = Petal.Length) %>%
    head(2)

哪个给出了

Sepal.Length Sepal.Width newName Petal.Width Species
         5.1         3.5     1.4         0.2  setosa
         4.9         3.0     1.4         0.2  setosa

我收到newName而不是nameY2017这是正常的。所以我试过

iris %>% 
    rename_(eval(newName) = 'Petal.Length')

但后来我收到了一个错误。

  

错误:“iris%>%rename_(eval(newName)=”

中的意外'='

使用dplyr是否有正确的方法? 我知道我可以做点什么

names(iris)[3] <- newName

但那不是dplyr解决方案。

1 个答案:

答案 0 :(得分:2)

此帖子中的dplyr 'rename' standard evaluation function not working as expected?

的信用和更多信息

您的代码:

newName = paste0('nameY', 2017)
iris %>% 
  rename(newName = Petal.Length) %>%
  head(2)

解决方案:

iris %>% 
  rename_(.dots = setNames("Petal.Length",newName)) %>%
  head(2)

输出:

  Sepal.Length Sepal.Width nameY2017 Petal.Width Species
1          5.1         3.5       1.4         0.2  setosa
2          4.9         3.0       1.4         0.2  setosa