gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:23:36 25 4
gpt4 key购买 nike

关于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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com