计算数据框行中的 Fisher 精确检验 p 值

Calculate Fisher's exact test p-value in dataframe rows

我在一个数据框中有一个包含 1700 个样本的列表,其中每一行代表每个助手从不同盒子中随机抽取的样本中计算出的彩色物品的数量。有两种可用的颜色和两个人在清点物品,因此这可以轻松创建 2x2 的意外事件 table。

df
Box-ID  1_Red  1_Blue  2_Red  2_Blue
1       1075   918     29     26
2       903    1076    135    144

我想知道如何将每一行视为一个连续事件 table(向量或矩阵)以执行卡方检验(如 Fisher 或 Barnard)并生成第六列与 p 值。 这是我目前试过的方法,但我不确定它是否正确

df$p-value = chisq.test(t(matrix(c(df[,1:4]), nrow=2)))$p.value 

我想你可以这样做

df$p_value <- apply(df,1,function(x) fisher.test(matrix(x[-1],nrow=2))$p.value)