在函数中,我有时需要 Select 一个变量,如果它存在.
为此,函数dplyr::any_of()
是完美的,但它只在标准判断下工作,将字符向量作为输入.
我正在寻找一个替代品,将工作作为一个替代品在下面的例子,感觉非常黑客:
library(tidyverse)
library(rlang)
f = function(data, x1, x2, gp){
gpname = as_label(enquo(gp))
data %>%
select(x1={{x1}}, x2={{x2}}, gp=any_of(gpname)) %>%
names()
}
iris %>% f(Sepal.Length,Sepal.Width,Species)
#> [1] "x1" "x2" "gp"
iris %>% f(Sepal.Length,Sepal.Width)
#> [1] "x1" "x2"
创建于2024—03—15,reprex v2.1.0
该函数应该使用或不使用Species
运行,就像在我的reprex中一样,但如果查询未知列时抛出错误是有意义的(与我的reprex不同).