パイプラインで作業しているときに、ベクトルから渡される関数名を使用してdplyr
関数を渡したいと思います。mutate
NSE
例
与えられた 2 つの関数名のベクトル:
funs <- c("sum", "mean")
最初の値を使用して合計を取得したい:
require(dplyr)
mtcars %>%
group_by(cyl) %>%
mutate_(res = funs[1](hp))
これにより、エラーが発生します。
Error in as.lazy_dots(list(...)) : attempt to apply non-function
do.call
do.call
ベースのソリューションは、合計に対していくつかの結果を生成するようです:
mtcars %>%
group_by(cyl) %>%
mutate_(res = do.call(funs[1], .))
しかし、使用しようとすると失敗しますmean
:
>> mtcars %>%
+ group_by(cyl) %>%
+ mutate_(res = do.call(funs[2], .))
Error in mean.default(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, :
argument "x" is missing, with no default
ここでの適用方法には意味がないと思います。したがって、私の質問:関数をベクトルから文字列として渡すことができるようにnseを使用する方法は?dplyr