如何对数据框列表中的每个数据框应用chisq.test独立性检验
报错原因
你拆分得到的每个子数据框仍保留了UC字符型列,而chisq.test()直接接收列联表输入时,要求输入对象的所有元素都是非负有限数值,字符列的存在触发了校验报错。
解决方法
你只需要在调用卡方检验时,筛选出每个子数据框中用于计算的两个数值列即可,修改后的代码如下:
# 原有拆分逻辑不变 my_data <- split(my_data, my_data$UC) # 应用卡方检验时仅保留数值列 chi_result <- lapply(my_data, function(x) { # 筛选掉UC列,仅保留两个频数列用于计算 chisq.test(x[, c("Fr_term", "Fr_other_terms")]) }) # 查看所有分组的卡方检验结果 chi_result
如果出现tibble结构兼容问题,可以将筛选后的列转为矩阵后再传入函数:
chi_result <- lapply(my_data, function(x) { chisq.test(as.matrix(x[, c("Fr_term", "Fr_other_terms")])) })
内容的提问来源于stack exchange,提问作者Pauline Bureau
相关产品推荐
相关产品推荐

