如何在 R 中的 dplyr 嵌套中执行 chisq.test

How to perform chisq.test within dplyr nest in R

我无法弄清楚如何在数据框的嵌套列表列中执行 chisq.test。如果我需要将数据列表列转换为矩阵,我该怎么做,然后如何正确引用 chisq.test 的变量?以下面的例子为例。谢谢!

这是一个例子:

a <- rep(c('A', 'B'), 10)
b <- rep(c('a', 'b'), each = 10)
c <- as.numeric(rep(c(1:10), each = 2))
df <- as.data.frame(cbind(a, b, c)) %>% 
  mutate(c = as.numeric(c))

在因子 'a'( 'A' 和 'B')?

dfnest <- df %>%
  nest(-a) %>% 
  mutate(chisq_p = map_dbl(data, ~chisq.test(.$b~.$c)$p.value))

最后一行是我想要完成的,但上面是不正确的 - 我如何在列表列数据中使用 chisq.test,并将 p.value 插入新列?

正在更改调用中的参数 chisq.test returns 预期结果。

df %>%
  nest(-a) %>% 
  mutate(chisq_p = map_dbl(data, ~chisq.test(.)$p.value))

您也可以使用匿名函数。

  df %>%
  nest(-a) %>% 
  mutate(chisq_p = map_dbl(data, function(f) { chisq.test(f)$p.value }))