dplyr重命名不使用正则表达式

Yif*_*fei 7 r dplyr

当我尝试根据特定条件重命名变量时,select函数工作正常

require(dplyr)
select(iris, petal = starts_with("Petal"))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用所有其他变量时

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

Error: Arguments to rename must be unquoted variable names. Arguments petal are not.
Run Code Online (Sandbox Code Playgroud)

我不知道为什么dplyr抱怨这个.如果打算这样做,使用starts_with(或contains)重命名变量的正确方法是什么,同时保留其他变量?

Dav*_*urg 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
...
Run Code Online (Sandbox Code Playgroud)