为什么叫
dplyr::one_of()
?所有其他 select_helpers
名称对我来说都有意义,所以我想知道 one_of()
是否有我不理解的方面。
我对
one_of()
的理解是,它只是让您使用名称的字符向量来选择变量,而不是将它们的名称放入 select()
调用中,但随后您会得到名称在向量中的所有变量,而不是只是其中的一个。这是错误的吗?如果是正确的,one_of()
这个名字从何而来?
one_of
允许猜测或子集匹配假设我一般知道我的列名称将来自
c("mpg","cyl","garbage")
但由于交互性/反应性,我不知道哪些列会出现
mtcars %>% select(one_of(c("mpg","cyl","garbage")))
评估但提供消息
Warning message:
Unknown variables: `garbage`
相比之下
mtcars %>% select(mpg, cyl, garbage)
不评估并给出错误
Error in overscope_eval_next(overscope, expr) :
object 'garbage' not found
select()
最终计算为逻辑向量。因此,如果您使用
starts_with
,它会遍历数据框中的变量并询问变量名称是否以正确的字符集开头。
one_of
执行相同的操作,但询问变量名称是否是字符向量中列出的名称之一。但正如他们所说,命名事物很难!
例如:
select(flights, dep, arr_delay, sched_dep_time)
不起作用,因为变量“dep”不存在。它不会产生任何结果。即使变量“dep”不存在,
select(flights, one_of(c("dep", "arr_delay", "sched_dep_time")))
也会起作用。在这种情况下,将显示“arr_delay”和“sched_dep_time”。助手应理解为:至少
one_of()
将显示变量:)