【发布时间】:2017-09-19 13:48:46
【问题描述】:
我想使用invoke_map 来调用函数列表。我有一组变量名,我想将它们用作每个函数的参数。最终变量名将与group_by 一起使用。
这是一个例子:
library(dplyr)
library(purrr)
first_fun <- function(...){
by_group = quos(...)
mtcars %>%
group_by(!!!by_group) %>%
count()
}
second_fun <- function(...){
by_group = quos(...)
mtcars %>%
group_by(!!!by_group) %>%
summarise(avg_wt = mean(wt))
}
first_fun(mpg, cyl) # works
second_fun(mpg, cyl) # works
both_funs <- list(first_fun, second_fun)
both_funs %>%
invoke_map(mpg, cyl) # What do I do here?
我尝试了各种尝试将变量名放在引号中,enquo 他们,使用vars,引用.data$mpg,等等,但我有点在黑暗中刺伤。
【问题讨论】:
-
This question 展示了如何通过更改函数以从命名参数而不是点获取分组列来解决问题,这是部分解决方案。我仍然对如何使用调用通过点传递变量名的问题感兴趣,尽管答案可能是不要从点中获取变量名。
-
您可能认为
.env参数在这里可能有用,但invoke_map(first_fun, list(list(mpg, cyl)), .env = as.environment(mtcars))也不起作用。