1

我有兴趣进行 spearmen 相关性测试,确定第一列 ( x) 中的数据是否与表中剩余的 2,314 个条目中的任何一个呈负相关。

x当我手动输入要比较的详细信息时,我使用的输入似乎很好y,例如:

data<-read.table("input.txt",header=TRUE)
x=data[,1]
y=data[,2]
cor.test(x,y,method="s")

.. 但是,当我应用for循环遍历所有 2314 列时,它 (1) 不起作用,但 (2) 也没有给我任何错误。

data<-read.table("input.txt",header=TRUE)
x=data[,1]
y=data[,2:2314]
for (i in y){
cor.test(x,i,method="s")
}

这是我的数据的简短示例:

GeneData    Test_Gene   Gene1   Gene2   Gene3   Gene4
Day1    429.92  5948.10 49.09   7965.23 1367.21
Day2    273.64  6394.40 66.39   4858.45 1529.97
Day3    2505.83 3384.90 45.99   5881.83 906.59
Day4    1290.60 3364.54 48.15   5754.26 894.16

我想看看“Test_Gene”是否与任何剩余的样本(Gene1、Gene2、Gene3 或 Gene4)相关。

4

2 回答 2

2

您可以使用lapply

x <- data[1]
lapply(data[-1], cor, x = x, method = "spearman")

要执行 a cor.test,您必须使用双括号将第一列提取为数字向量(而不是单列数据框):

x <- data[[1]]
lapply(data[-1], cor.test, x = x, method = "spearman")
于 2013-06-27T16:35:06.717 回答
1

您的代码的问题是您没有对cor.test. 您要么需要将其分配给带有<-print它的东西。

x=data[,1]
y=data[,2:2314]

corr.values <- vector("list", 2313)
for (i in 1:length(y) ){
            corr.values[[i]] <- cor.test(x, y[[i]], method="s")
            }
head(corr.values)
于 2013-06-27T16:54:48.433 回答