invoke_map
を使用して関数のリストを呼び出したいとします。私は、それぞれの関数の引数として使用したい変数名のセットを持っています。最終的に変数名はgroup_by
と一緒に使用されます。 、私は彼らがvars
を使用し、enquo
、引用符で変数名を置くために様々な試みを試してみましたinvoke_mapを使用して変数名をargsとして渡す
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?
.data$mpg
を参照するなど、私は暗闇の中でビットを刺しています:
は、ここでの例です。
[この質問](https://stackoverflow.com/questions/43415475/how- to-parametrize-function-calls-in-dplyr-0-7/43416705#43416705)は、ドットの代わりに名前付きパラメータからグループ化カラムを得るために関数を変更することによって問題に対処する方法を示しています。私はまだinvokeを使って変数名をどのようにドットで渡すかという問題に興味がありますが、おそらく答えはドットから変数名を取得しないということです。 –
'.env'引数はここでは便利だと思いますが、' invoke_map(first_fun、list(mpg、cyl))、.env = as.environment(mtcars)) 'も動作しません。 – Axeman