我有20个物体。我有一个执行成对分析的功能。我想对所有对进行成对分析。假设函数是cor.test。而不是写出所有190对
a <- cor.test(1,2);
b <- cor.test(1,3);
c <- cor.test(1,4)
...
如何将此函数同时应用于所有对并吐出,在这种情况下,每对之间的相关性?任何建议将不胜感激。
(如果重要的话,每个对象都是一个矩阵)
答案 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)) } )