我有兴趣进行长矛相关测试,我确定第一列(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)相关。
答案 0 :(得分:2)
您可以使用lapply
:
x <- data[1]
lapply(data[-1], cor, x = x, method = "spearman")
要执行cor.test
,您必须使用双括号将第一列提取为数字向量(而不是单列数据框):
x <- data[[1]]
lapply(data[-1], cor.test, x = x, method = "spearman")
答案 1 :(得分: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)