将函数应用于置换对象

时间:2014-10-08 13:52:36

标签: r function permutation

我有20个物体。我有一个执行成对分析的功能。我想对所有对进行成对分析。假设函数是cor.test。而不是写出所有190对

a <- cor.test(1,2);
b <- cor.test(1,3);
c <- cor.test(1,4)
...

如何将此函数同时应用于所有对并吐出,在这种情况下,每对之间的相关性?任何建议将不胜感激。

(如果重要的话,每个对象都是一个矩阵)

2 个答案:

答案 0 :(得分:1)

你可以使用combn,不清楚你将如何处理矩阵之间的相关性,但是这里假设你有载体我将如何做到这一点:

## put your objects within the same list , you can use `mget` if you have 
## some pattern for your objects names
ll <- list(obj1,obj2,obj3)
## then combining to get all permutations and applying your function
combn(seq_len(length(ll)),2,FUN = function(x){
  cor.test(ll[[x[1]]],ll[[x[2]]])
},simplify=FALSE)

你的对象在哪里:

obj1 = 1:5
obj2 = 1:5
obj3 = 1:5

答案 1 :(得分:0)

尝试:

objlist = c(obj1, obj2, obj3)

outlist = list()
len = length(objlist) 
for(i in 1:len) for (j in 1:len) if(i != j) {
    outlist[[length(outlist)+1]] = cor.test(objlist[[i]], objlist[[j]])
}

OR:

outlist = sapply(objlist, function(x) { sapply(objlist, function(y) cor.test(x,y)) } )