【发布时间】:2016-01-18 23:27:19
【问题描述】:
所以我有 n 个函数,它们都在同一个向量上运行,假设命名为 x。例如,它们可能是:
s1 = function(x) mean(x)
s2 = function(x) sd(x)
...
sn = function(x) 1/length(x)*sum(x^3)
x <- c(3, 1, 5, 2, 7, 2, 4, 2, 1)
我想生成 p 个这些函数的所有可能组合,并将每个组合应用于向量 x。
到目前为止,我得到的是 combn 函数,但它似乎只适用于这样的字符向量:
a <- c("s1", "s2", "s3", ..., "sn")
b <- combn(a, 2)
b
[,1] [,2] [,3] ...
[1,] "s1" "s1" "s2" ...
[2,] "s2" "s3" "s3" ...
我需要一种方法来轻松地制作我所有函数名称的向量,以及一种获取上面 b 列并将所有函数一起应用的方法。 我知道 plyr 中的每个函数,它可以完美地工作,除了 combn 的输出是一个字符向量并且每个函数都需要实际函数作为参数,而不是名称。所以我需要的第二件事是一种转换方式
each("s1", "s2")
进入
each(s1, s2)
其中顶部是 b 矩阵的一列,第二个使用我在开始时定义的函数。
理想情况下,最终代码将使用 apply 函数应用于 b 的每一列。
非常欢迎任何关于我无法弄清楚的部分的帮助或关于另一种方法的想法。
【问题讨论】:
标签: r combinatorics