如何解决与现有列名冲突时,强制 dplyr 评估传递的符号 / quosure
问题
我想以 dplyr::arrange
的形式将列名串成 am <- "cyl"
。目的是按列cyl
排序。
预期结果
dplyr::arrange(mtcars,cyl)
尝试
am <- "cyl"
1) rlang::quo
dplyr::arrange(mtcars,!!rlang::quo(am))
按 am
而非 cyl
排序。
2) rang::ensym
dplyr::arrange(mtcars,!!rlang::ensym(am))
按 am
而非 cyl
排序。
3) 咖喱卷发
dplyr::arrange(mtcars,{{am}})
未排序。
背景
在实际功能中,我正在按创建的索引列对数据框进行排序。带有列名的变量称为 index_column
。我想保护自己免受包含 index_column
的实际数据的影响(尽管可能性很小)。我可以使用 make.names
并扫描唯一的列名来解决这个问题,但我对解决上述问题更感兴趣。
解决方法
推荐的方式是使用.data
:
dplyr::arrange(mtcars,.data[[my_variable]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。