我有一个数据框,看起来像这样:
表1
SNo. C1 C2 C3 C4 C5
1. A*01 17 116 78 141
2. A*02 30 1 65 256
3. A*03 --------------
4. A*04 --------------
5.----------------------
对于每一行,我想使用需要 2x2 表的函数计算优势比和 95% 置信区间fisher.test()
。当我手动提供数字进行测试时,它工作正常:fisher.test(matrix(c(17, 116,78, 141), ncol = 2, byrow = TRUE))
但是当我这样做时fisher.test(matrix(c(table1[1,2:5]), ncol=2, byrow=T))
它会给我这个错误:
"x"的所有条目必须是非负数和有限的
请建议我做错了什么
您没有将正确的输入传递给函数。当您这样做时,它可以正常工作。例如:
dat <- read.table(text="SNo. C1 C2 C3 C4 C5
1. A*01 17 116 78 141
2. A*02 30 1 65 256",header=TRUE)
apply(
dat[-(1:2)],
1,
function(x) fisher.test(matrix(x,nrow=2,byrow=TRUE))
)
#[[1]]
#
# Fisher's Exact Test for Count Data
#...
#odds ratio
# 0.2658521
#
#
#[[2]]
#
# Fisher's Exact Test for Count Data
#...
#odds ratio
# 116.4649