为什么 one_of() 这么叫?

问题描述 投票:0回答:4

为什么叫

dplyr::one_of()
?所有其他
select_helpers
名称对我来说都有意义,所以我想知道
one_of()
是否有我不理解的方面。

我对

one_of()
的理解是,它只是让您使用名称的字符向量来选择变量,而不是将它们的名称放入
select()
调用中,但随后您会得到名称在向量中的所有变量,而不是只是其中的一个。这是错误的吗?如果是正确的,one_of()
 这个名字从何而来?

r naming
4个回答
34
投票

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
    

22
投票
我的想法是

select()

 最终计算为逻辑向量。因此,如果您使用 
starts_with
,它会遍历数据框中的变量并询问变量名称是否以正确的字符集开头。 
one_of
 执行相同的操作,但询问变量名称是否是字符向量中列出的名称之一。但正如他们所说,命名事物很难!


5
投票
其名称的原因似乎是它允许您至少查找向量中包含的变量之一。

例如:

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()

 将显示变量:)


0
投票
(¿Hay algún equale de one_of que pueda usarse en Rstudio_cloud?)

© www.soinside.com 2019 - 2024. All rights reserved.