【发布时间】:2017-10-19 07:24:01
【问题描述】:
我正在使用 R 浏览 CSV 文件并检查每列数据与所有其他数据的相关性。
for(i in myData){
for(n in myData){
pcc = cor.test(i, n, method="pearson")
corr <- pcc$estimate
pval <- pcc$p.value
if(corr > .45 && pval < .05){
print(colnames(myData)[i])
print(colnames(myData)[n])
print (corr)
}
}
}
我试图让我的输出成为 i 的列名、n 的列名和相关性。相反,我得到每个列名、每个列名和相关性。
我对 R 和数据框架还很陌生,所以任何提示都将不胜感激。
【问题讨论】:
-
关于 i 和 n 是什么有些混淆。当您编写
pcc = cor.test(i, n, method="pearson")时,您将它们视为 myData 的列,但是当您编写print(colnames(myData)[i])和print(colnames(myData)[n])时,您将它们视为索引 -
在循环的第一遍中,
i被分配为 data.frame 的第一列作为完整向量;n也是如此;所以你的第一个cor.test电话实际上是cor.test(myData[,1], myData[,1], method="pearson")。这对于您的pcc值应该没问题。但是,colnames(myData)[i]没有意义,因为它没有检索列名向量中的“第 n 个”名称。也许for (i in seq_along(myData))(n相同)和cor.test(myData[,i], myData[,n], ...)会更好? -
@r2evans 你的建议成功了,非常感谢。如果你想把它写成答案,我可以检查它是否正确。