我有一个数据框,并希望为每一行(3x2列联表)执行卡方检验。
因此,对于第一行,应对以下列联表执行卡方检验;
我使用下面的代码,但是这不会计算正确的p值(所有p值都等于零,而当我自己计算卡方检验时则不是这样):
table <- read.delim("dataframe.txt")
apply(table, 1, function(x) chisq.test(matrix(x,nrow=3)))
有人可以帮我吗?
提前谢谢
Wannes
答案 0 :(得分:1)
使用ncol
代替nrow
:
apply(table, 1, function(x) chisq.test(matrix(x,ncol=3)))
目前,您正在构建第一行的矩阵:
102 3264
4998 105
105 3636
当R从向量构建矩阵时,它按列构建它们,所以第二个值进入第二行等等。
此外,如果您希望它仅报告p值,您可以执行以下操作:
apply(table, 1, function(x) chisq.test(matrix(x,ncol=3))$p.value)