r - dplyr::pull 以裸字符串或带引号的字符串作为参数?

标签 r dplyr

基于阅读 documentationdplyr::pull并检查示例,我的印象是 var参数应该是“裸列名称”。例如:

dplyr::pull(mtcars, cyl)
[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4

但是,我刚刚意识到引用的列名也有效:
dplyr::pull(mtcars, "cyl")
[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4

我只是好奇这两种风格是否有什么区别。此外,将第二个选项用于非交互式使用(例如 R 包开发)是否有任何缺点。

在这些示例中,我使用了 dplyr 的 0.7.4 版。

谢谢

最佳答案

pull电话select_var使用 quasiquotation评估或不评估参数并最终从数据中返回一个列名。这允许以支持交互式和编程使用的灵活方式指定列。

a <- "cyl"
select_var(names(mtcars), a)
[1] "cyl"
pull(mtcars,a)
 [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4

关于r - dplyr::pull 以裸字符串或带引号的字符串作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749226/

相关文章:

r - 'T' & 'F' 从数据库中读取为 True 和 False

r - 查找数据框的最近星期一

r - 错误后如何激活R任务回调

r - 数据框中每两行之间的余弦相似度

r - 如何从 R 中的函数填充数据框?

R如何检查自定义函数是否在某个包的特定函数中被调用

r - 使用 rollsum 并组合两个数据框

R strsplit 具有多个无序分割参数?

r - 计算长数据中行之间的差异

r - 计算最高进先出交易