r - 将功能列表应用于值列表

标签 r apply

关于this question ,我试图找出将函数列表应用于值列表的最简单方法。基本上是一个嵌套的lapply。例如,在这里我们将sdmean应用于内置数据集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))

但我希望也许有一种巧妙的方法可以解决我所缺少的位置和名称匹配问题。

最佳答案

由于mapply使用省略号...传递 vector (原子或列表),而不是像sapply, lapply, etc ...那样传递命名参数(X),因此如果您使用mapply而不是sapply,则无需命名参数X = trees:

funs <- list(sd = sd, mean = mean)

x <- sapply(funs, function(x) sapply(trees, x))

y <- sapply(funs, mapply, trees)

> y
              sd     mean
Girth   3.138139 13.24839
Height  6.371813 76.00000
Volume 16.437846 30.17097
> identical(x, y)
[1] TRUE

您距离您将要找到的信只有一封信! :)

请注意,我使用了funs的列表,因为无法创建函数的数据框,但出现错误。
> R.version.string
[1] "R version 3.1.3 (2015-03-09)"

关于r - 将功能列表应用于值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30759367/

相关文章:

javascript - 使用 Function.prototype.apply 设置 javascript 回调范围

R - 条件滞后 - 如何在满足条件之前滞后一定数量的单元格?

r - 在函数内部使用 dplyr 时出错

python - 从 pandas apply 构造一个 DataFrame

python - 避免嵌套 .apply()

python - Pandas :在列上添加重复指标

css - 将 Rmarkdown 与来自 CDN 的 CSS 结合使用

r - 使用循环将多个 data.frame 合并为一个 data.frame

r - 用 R 绘制漂亮的饼图

r - 寻找连续 3 个最冷的月份