【发布时间】:2018-06-07 20:41:48
【问题描述】:
我可以像这样重命名 dplyr 中的列:
mtcars %>% dplyr::rename('cylinder'=cyl)
但是,如果我想以编程方式更改列名,如下所示:
cnames=c('cylinder', 'mile_per_gallon')
mtcars %>% dplyr::rename(cnames[1]=cyl)
# or like this
mtcars %>% dplyr::rename( !!sym(cnames[1])=cyl)
我收到错误消息:
Error: unexpected '=' in "mtcars %>% dplyr::rename(cnames[1]="
我不明白为什么会这样。有谁知道如何使它工作?谢谢。
【问题讨论】:
-
在第二次尝试中尝试使用
:=而不是=。 -
是的,这行得通!谢谢!顺便说一句,为什么第一个不起作用?
-
因为在 dplyr 中没有什么能像直接存储在值中的字符串那样工作。您现在必须与
!!一起完成符号/quosure 舞蹈。在这种情况下,:=是必需的,因为 quosure 操作发生在左侧,赋值侧。