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

时间:2018-02-12 14:54:47

标签: r dplyr

根据阅读dplyr::pull的{​​{3}}并查看示例,我的印象是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版本。

由于

1 个答案:

答案 0 :(得分:2)

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