[英]In R, correlation test between two columns, for each of the groups in a third column
我的数据框(g)包含2列,其中包含连续数据,其他列包含分类数据。 我想测试2个连续变量之间的相关性,在第三列定义的不同组中。
g(157X3000)看起来像:
Geno GDW GN M1 M2 M3
1 SB002XSB012 -17.1597630 52.31961 G/G C/C T/T
3 SB002XSB044 -3.6537657 53.81305 G/G C/G G/G
4 SB002XSB051 -7.8411596 58.05924 A/G C/C G/T
5 SB002XSB067 2.8412103 30.85074 A/G G/G G/T
6 SB002XSB073 -16.0789550 -10.09913 A/A C/G G/G
7 SB002XSB095 0.1759709 10.28837 A/A G/G T/T
我正在寻找每个M.定义的每个组中GDW和GN之间的相关性。我试过:
q<- function (x) {
spl<-split(g[,2:3],x)
r<-function(x) { if ((nrow(x[[1]][1]))>2)
cor.test(x[[1]][1],x[[1]][2],use="pairwise.complete.obs")[3:4] else Na
}
cor<- sapply(spl,r)
}
all.cor<- apply(g[,4:ncol(g)],2,q)
得到了:
Error in if ((nrow(x[[1]][1])) > 2) cor.test(x[[1]][1], x[[1]][2], use = "pairwise.complete.obs")[3:4] else Na :
argument is of length zero
并且没有解决它
有任何想法吗
如果我理解正确,您希望计算列M1中每个值的GDW和GN之间的相关性(即,通过分割M1的每个唯一值)。
使用Hadley的plyr
require(plyr)
# assuming the data.frame is df (Note: factor M1 if necessary)
daply(df, .(M1), function(y) cor(y$GDW, y$GN))
我想你想要这个函数r
:
if ((length(x[[1]]))>2)
cor.test(x[[1]],x[[2]],use="pairwise.complete.obs")[3:4] else NA
x[[1]]
是向量,而x[[1]][1]
是该向量的单个元素。 你显然想要cor.test
矢量而不是单个元素。
另外,向量具有length
但是nrow
不合适。
您得到的错误是nrow(x[[1]][1])
求值为NULL
,因此nrow(x[[1]][1]) > 2
计算为logical(0)
。 if
的参数应该是长度为1的logical
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.