2015-10-05 117 views
1

我有一个数据框,其中包含一个因变量和20个独立变量。我想找到因变量和每个独立变量和相关p值之间的相关系数。我写了以下功能:相关变量和自变量之间的相关性

for (i in 2:20){ 
    correl = cor.test(df[ , i], df[ , 22]) 
    print(correl) 
} 

它一次打印出一个相关系数和它的p值。是否有一个函数能以表格的形式产生相同的结果?

+0

只是作为参考,请参见我的博客文章为获得相关看到堆栈溢出多次相同的排序问题后:https://drsimonj.svbtle.com/how-does-one-可变归属关系与 - 所有其他 –

回答

1

可以使用sapply抓住每对结果的向量,一个:

base.idx <- 1 
other.idx <- 2:20 
cors <- unname(sapply(other.idx, function(i) cor.test(df[,base.idx], df[,i])$estimate)) 
pvals <- unname(sapply(other.idx, function(i) cor.test(df[,base.idx], df[,i])$p.value)) 

下面是与内置的虹膜数据集的例子,敛Sepal.Length和其他三个之间的相关性信息数值:

base.idx <- 1 
other.idx <- 2:4 
(cors <- unname(sapply(other.idx, function(i) cor.test(iris[,base.idx], iris[,i])$estimate))) 
# [1] -0.1175698 0.8717538 0.8179411 
(pvals <- unname(sapply(other.idx, function(i) cor.test(iris[,base.idx], iris[,i])$p.value))) 
# [1] 0.1518983 0.0000000 0.0000000