【发布时间】:2017-06-06 10:56:06
【问题描述】:
我在 R 中有以下三重 for 循环:
res <- data.frame()
for (i in c(1,3,5,7,9,11,13)) {
for (k in c(3,5,7,9,11,13)) {
for (j in 1:41) {
tmp <- chisq.test(matrix(c(counts[j,i],counts[j,(i+1)],counts[j,k],counts[j,(k+1)]),nrow=2,ncol=2,byrow=TRUE))
res<-c(res,c(tmp$p.value))
}}}
counts 是一个 14x41 的数据框,其中包含基因型计数值(诸如 600、400、240 之类的数字。您可以使用随机值生成自己的数字,以便在您的计算机中重现)。
我想将 chisq.test 的结果 p.value 保存在一个向量中(res,来自“results”)。目前,输出如下:
这没关系,但现在我还希望它有另外三列指示 j、i 和 k 值,以便稍后我可以跟踪每个 p 值的来源。因此,所需的输出将是:
res
(p value 1) j1 i1 k1
(p value 2) j2 i2 k2
...
所以,我修改了循环,将 j,i,k 添加到最后一行,如下所示:
res <- data.frame()
for (i in c(1,3,5,7,9,11,13)) {
for (k in c(3,5,7,9,11,13)) {
for (j in 1:41) {
tmp <- chisq.test(matrix(c(counts[j,i],counts[j,(i+1)],counts[j,k],counts[j,(k+1)]),nrow=2,ncol=2,byrow=TRUE))
res<-c(res,c(tmp$p.value,j,i,k))
}}}
它会产生以下结果(我不喜欢):
有什么想法吗?谢谢!
【问题讨论】:
-
什么是
counts?您能否提供一个可重现的示例来运行您提供的代码? -
问题上已经解释过了。 “counts 是一个 14x41 的数据框,带有基因型计数值(数字如 600、400、240.. 您可以使用随机值生成自己的数字,以便在您的计算机中重现)。”