这个问题与将变量传递给使用' enquo() '的函数有关。
我有一个更高级的函数,它的参数是一个索引(dat
)和数据中感兴趣的列(variables_of_interest_in_dat
)。在这个函数中,有调用另一个函数,我想通过variables_of_interest_in_dat
。
higher_function <- function(dat, variables_of_interest_in_dat){
variables_of_interest_in_dat <- enquos(variables_of_interest_in_dat)
lower_function(dat, ???variables_of_interest_in_dat???)
}
lower_function <- function(dat, variables_of_interest_in_dat){
variables_of_interest_in_dat <- enquos(variables_of_interest_in_dat)
dat %>%
select(!!!variables_of_interest_in_dat)
}
将variables_of_interest_in_dat
传递给lower_function的推荐方法是什么?
我已经尝试过lower_function(dat, !!!variables_of_interest_in_dat)
,但是当我运行higher_function(mtcars, cyl)
时,这会返回"错误:不能在顶层使用!!!
。">
在相关的帖子中,higher_function在将变量传递给lower function之前没有将变量赋值。
谢谢
这是你想要的吗?
library(tidyverse)
LF <- function(df,var){
newdf <- df %>% select({{var}})
return(newdf)
}
HF <- function(df,var){
LF(df,{{var}})
}
LF(mtcars,disp)
HF(mtcars,disp)
{{}}
(又名'大括号')操作符用enquo()