2017-05-23 178 views
1

我想用新名称重命名特定列,该名称在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 

我越来越newNamenameY2017这是正常的。所以我试了

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

但是后来出现错误。

Error: unexpected '=' in "iris %>% rename_(eval(newName) ="

有没有适当的方法来做到这一点dplyr? 我知道我可以做这样的事情

names(iris)[3] <- newName 

但是这不会是dplyr解决方案。

+0

这已经在这里找到答案: H ttps://stackoverflow.com/questions/36520813/r-dplyr-rename-and-select-using-string-variable –

+0

你尝试过'名称(虹膜)[其中(名称(虹膜)%在%“newName”) ] < - paste0('nameY',2017)'。不是'dplyr',但它应该工作。 – csmontt

回答

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