【发布时间】:2019-03-07 01:46:39
【问题描述】:
我想选择一个可能存在也可能不存在的列,如果该列丢失且没有错误,则让它简单地返回所有其他列。这适用于非标准评估,但不适用于 tidyverse 函数select_ 的标准评估。
例如,以下内容按预期工作:
iris %>%
select(Sepal.Length, Sepal.Width, contains("banana"))
Sepal.Length Sepal.Width
1 5.1 3.5
2 4.9 3.0
3 4.7 3.2
4 4.6 3.1
...
但是使用标准评估(我需要使用它在包中发布它)这不起作用:
iris %>%
select_("Sepal.Length", "Sepal.Width", contains("banana"))
Error: No tidyselect variables were registered
我意识到破坏的版本有什么问题,但我不确定使用 tidyverse 功能有哪些替代方案。
【问题讨论】:
-
我会避免在一个包中完全使用
select,第一个版本使用NSE,而不是第二个,你为什么要使用select_? -
我想?您的术语可能是落后的:即
select()使用 NSE,而select_使用 标准 评估(即非 NSE)... -
如果目标是
select("Sepal.Length", "Sepal.Width", contains("banana")),您可以在select()中使用字符串。另见select_at()。 -
本,我的术语是错误的。我的意思是使用标准评估。