2015-05-29 67 views
7

的选择功能工作正常,当我试图根据特定的条件dplyr重命名不能与正则表达式的工作

require(dplyr) 
select(iris, petal = starts_with("Petal")) 

然而,当我试图让所有的其它变量使用重命名变量

rename(iris, petal = starts_with("Petal")) 

Error: Arguments to rename must be unquoted variable names. Arguments petal are not. 

我不知道为什么dplyr抱怨这件事。如果这种行为是有意的,在保持其他变量的同时,使用starts_with(或contains)重命名变量的正确方法是什么?

回答

11

select已经为您重命名。您可以将everything()添加到通话中以获取其余列

select(iris, petal = starts_with("Petal"), everything()) 
#  petal1 petal2 Sepal.Length Sepal.Width Species 
# 1  1.4 0.2   5.1   3.5  setosa 
# 2  1.4 0.2   4.9   3.0  setosa 
# 3  1.3 0.2   4.7   3.2  setosa 
# 4  1.5 0.2   4.6   3.1  setosa 
# 5  1.4 0.2   5.0   3.6  setosa 
# 6  1.7 0.4   5.4   3.9  setosa 
# 7  1.4 0.3   4.6   3.4  setosa 
# 8  1.5 0.2   5.0   3.4  setosa 
# 9  1.4 0.2   4.4   2.9  setosa 
...