2017-05-23 130 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