使用标准评估整理 Chisq.Test 输出的函数

Function for Tidying Chisq.Test Output with Standard Evaluation

library(ggmosaic)
library(purrr)
library(dplyr)
library(tibble)
library(tidyr)
library(broom)

这个问题是对 Jake Kaupp(下面的link)提供的先前答案的扩展。

我想使用标准评估将下面的代码转换为函数,以便我可以跨不同的变量创建整洁的 chisq.test 结果。下面的代码在映射行中使用 "happy$happy" 来查找 "happy" 变量与其他分类变量之间的关联。该函数允许我将 "happy" 更改为另一个变量,例如 "health" 或 "marital"。

我想在函数中也包括最后 "unnest" 行,以便 returns 得到整洁的 chisq.test 结果。

df <- happy %>%
select(-id,-year,-age,-wtssall)  %>%
map(~chisq.test(.x,happy$happy))%>%
tibble(names=names(.),data=.) %>%
mutate(stats=map(data,tidy))

unnest(df,stats)

您可以将 happy$happy 替换为 happy[,"happy"],这样您就可以:

chifun <- function(var) {
       df <- happy %>% select(-id,-year,-age,-wtssall)%>%
                map(~chisq.test(.x,happy[,var]))%>%
                tibble(names=names(.),data=.)%>%
                mutate(stats=map(data,tidy)) %>% unnest(stats)
       return(df)
}

chifun("happy")