【发布时间】:2014-08-09 17:40:16
【问题描述】:
我有一个名为“case.control”的数据有 1000 行和 2000 col 列是 case 或 control 所以我根据案例和控制将它们分开,所以我现在有两个数据集 一将是 1000 行和 400 col = case 另一个 1000 行和 600 列 = 控制 我尝试在每一行都进行 Fisher 测试
dat1=c()
dat2=c()
for (i in 1:nrow(case)){
dat1[i]<-table(case[i,])
dat2[i]<-table(control[i,])
tab[i]<-as.table(rbind(dat[i],dat[i]))
fisher.test(tab, alternative="greater")}
此代码不起作用,因为有时我在单元格中的值为零,但代码将其更改为另一个数字,例如,如果我有
g1 g2
400 0
500 100
把它改成
g1 g2
400 400
500 100
任何建议
数据看起来像这个样本:
Positions gene1 gene2 gene3 ...... gene2000
1 0 1 2 2
2 1 0 0 1
3 2 1 1 1
.
.
1000 1 0 0 0
【问题讨论】:
-
你能提供一个小样本数据来复制这个问题吗?
-
目前您的代码暗示您的工作区中有许多对象:
data.control、case、control和dat。您还未能创建dat1、dat2或tab对象,因此使用[<-分配给“内部值”可能会失败。我猜您来自不同的编程范例,您可以轻松地使用对象名称,但是这种操作在 R 中是不合法的。如果我错了,那么您需要提供丢失数据对象的一小部分。 -
我现在更改对象。看看你能不能看懂。
-
case和control对象的结构仍不清楚。您的示例数据只是一个“东西”,但您有两个对象。此外,此代码:rbind(dat[i],dat[i])可能应该是rbind(dat1[i],dat2[i])... 或其他东西。请花点时间发布一个可重现的示例,不幸的是,这是....不是。
标签: r chi-squared