参考此问题,我试图找出将函数列表应用于值列表的最简单方法。基本上是嵌套的lapply
。例如,这里我们将sd
和mean
应用于内置数据集trees
:
funs <- list(sd=sd, mean=mean)
sapply(funs, function(x) sapply(trees, x))
获得:
sd mean
Girth 3.138139 13.24839
Height 6.371813 76.00000
Volume 16.437846 30.17097
但我希望避免使用内部的function
,并想要类似这样的代码:
sapply(funs, sapply, X=trees)
由于X
匹配了第一个sapply
而不是第二个,所以它不起作用。我们可以使用functional::Curry
来解决:
sapply(funs, Curry(sapply, X=trees))
但我希望也许有一种聪明的方法可以使用位置和名称匹配来完成这个任务,而我可能没有想到它。
library(purrr) ; map_df(funs, ~map_df(trees, .x), .id = 'statistic')
。 - alistaire