我有一个包含200列的数据集,每列有1000行观察值。我试图找到每列之间的相关性,没有重复。因此,例如,第1列和第2列,第1列和第3列,第2列和第3列,而不是第3列和第1列,因为这与第一个配对相同。从数学上讲,我应该有19900对列,但是我不知道该如何获得。我到目前为止的代码如下:
corr.results<- rep(NA,19900)
for(i in 1:19900)
{
column1<- i
column2<- i+1
results<- cor.test(all.null.data[ ,column1], all.null.data[ ,column2],
alternative = "two.sided", method="pearson",
exact=NULL, conf.level=0.95, continuity=FALSE)
corr.results[i]<- results$p.value
}
View(corr.results)
显然,这是不正确的,因为我只做相邻对(例如1&2、2&3、3&4等),但这是我到目前为止所拥有的。
使用combn
创造一切可能的组合。
combn(seq_along(all.null.data), 2, function(x) {
cor.test(all.null.data[ ,x[1]], all.null.data[ ,x[2]],
alternative = "two.sided", method="pearson",
exact=NULL, conf.level=0.95, continuity=FALSE)$p.value
}) -> corr.results
corr.results
对于200列,它将为您返回19900个值。
ncol(combn(1:200, 2))
#[1] 19900
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句