【发布时间】:2015-08-25 21:13:00
【问题描述】:
参考 this question,我试图找出将函数列表应用于值列表的最简单方法。基本上,一个嵌套的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))
但我希望也许有一种聪明的方法可以通过我缺少的位置和名称匹配来做到这一点。
【问题讨论】:
-
hadley 就这个话题写了一整章:adv-r.had.co.nz/Functional-programming.html#lists-of-functions,因为我并不比他聪明,所以我知道没有更好的方法了
-
不是更简单,但如果你想要一个整洁的 data.frame 最后很好:
library(purrr) ; map_df(funs, ~map_df(trees, .x), .id = 'statistic')