【问题标题】:How to loop chi sq test in R如何在 R 中循环 chi sq 测试
【发布时间】:2016-09-22 19:40:40
【问题描述】:

我有一个包含替代和参考等位基因计数的表格。我如何在 R 中循环 chi sq 测试来为每一行运行它?我附上了我桌子的照片。我需要使用 altCount 和 refCount 列执行 chi sq 测试。

   altCount refCount
     8        6
     3        7
     4        9 

我需要每一行的 p 值。我对 R 很陌生。我想出了如何对单个行执行 chi sq 测试,但由于我有数千行,我需要创建一个循环来一次运行它。 我做到了:

bcz <- read.delim("C:/cygwin64/home/sbomb/tables/bc_z_alleles.csv")
a = bcz[1,6]
b = bcz[1,7]
c = c(a,b)
d = c(0.5,0.5)
chisq.test(
     x = c,
     p = d, 
 )

但我不知道如何为整个表循环它。你能解释一下如何详细说明吗?

enter image description here

【问题讨论】:

  • 发布数据图片不是很有帮助。尝试在问题本身中包含reproducible example,它会提供示例输入并清楚地显示所需的输出。
  • 作为先生。弗里克解释说,你需要显示数据。这么说,我认为这个例子可能会给你带来尝试,然后如果你不能解决自己的问题。这次是可重现的例子。祝你好运stackoverflow.com/questions/25350618/….

标签: r loops chi-squared


【解决方案1】:

对于初学者来说最简单的循环仍然是 for 循环:

d <- data.frame(a = c(8,3,4), b = c(6,7,9))
for(row in 1:nrow(d)){
    print(row)
    print(chisq.test(c(d[row,1],d[row,2])))
}

也可以这样做

apply(d, 1, chisq.test)

后者更短,并为您提供一个列表作为您的结果,这可能更适合进一步评估。

【讨论】:

  • 感谢您的建议,但如果我的数据表中的行数为 44,850,我该怎么办,所以我不能像 a = c(8,3,4) 那样重新输入每个值?
  • 我想我找到了答案。如果我输入: d
猜你喜欢
  • 2021-01-21
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
相关资源
最近更新 更多