这按预期工作:
library(dplyr)
f <- function(x = c(am, vs))
mtcars %>%
select({{x}})
我如何重写该函数(我们称之为
f2
),使得f2
仅选择x的第一个元素,即f2()
最终应该与mtcars %>% select(am)
相同?
一些要求:
...
的解决方案在我的情况下不起作用。x = c("am", "vs")
也不是所希望的。tidyselect::eval_select()
返回 select()
使用的索引向量,也可以是子集,因此一种方法可能是:
library(tidyselect)
library(dplyr)
f2 <- function(x = c(am, vs)) {
mtcars %>%
select(first(eval_select(expr({{x}}), data = .)))
}
f2() |>
names()
[1] "am"