通过2参数函数进行组合

时间:2016-06-14 18:32:57

标签: r apply combn

我使用内置数据集" ChickWeight"。对于每个名称,体重,时间,小鸡,饮食,我的功能只是取每对名称,体重时间,体重鸡,体重饮食,时间小鸡,时间饮食,小鸡饮食之间的差异。函数和计算本身相当简单和不可靠,但我想找到如何在组合中传递2参数函数。

我的脚本如下

out <- combn(names(ChickWeight), 2, simplify=FALSE)

f <- function(x, y)
{
diff <- (x - y)
}

mapply(f, out[1,], out[2,])

更新:似乎我需要减去函数f中的数值,而不是名字。我想知道如何做到这一点。也许我需要找到一种方法来引用[1,]和out [2,],以便可以调用相应列中的数值。

1 个答案:

答案 0 :(得分:2)

  

我想找到如何在组合中传递2参数函数。

好的,所以有两个问题。编程之一由

之类的东西解决
combn(names(ChickWeight), 2, function(x) ChickWeight[[x[1]]] - ChickWeight[[x[2]]])

combn总是采用单参数函数,令人困惑。

概念问题是:小鸡是有序数据而饮食是绝对的。在减法等算术运算中,这些都没有意义(这就是上面的代码给出警告和NA的原因)。