执行t检验时遇变量组合错误问题求助
t检验报错:无法合并字符型与数值型变量的解决方案
报错信息
执行独立样本t检验时收到以下警告与错误:
Warning in is.na(y) : is.na() applied to non-(list or vector) of type 'language' Error: ! Can't combine `SpeakGroup`<character> and `GmeanResponse`
错误回溯栈:
- deledata %>% ...
- stats:::t.test.default(...)
- tibble:::
[.tbl_df(x, xok) - tibble:::tbl_subset_matrix(x, j, j_arg)
- vctrs::vec_c(!!!values, .name_spec = ~.x)
- vctrs (local)
<fn>() - vctrs::vec_default_ptype2(...)
- vctrs::stop_incompatible_type(...)
- vctrs:::stop_incompatible(...)
- vctrs:::stop_vctrs(...)
用到的代码
数据筛选代码:
deledata <- groupwithmean %>% filter(Test == "ESP") deledata
t检验代码:
ttestDELE <- deledata %>% t.test(GmeanResponse ~ SpeakGroup, mu=0, alt="two.sided", conf=0.95, var.eq=F, paired=F) ttestDELE
问题原因及解决方法
核心问题
使用管道符%>%调用t.test时,没有明确指定data参数,导致函数错误地将公式中的变量视为需要合并的对象,触发类型不兼容报错。
解决步骤
修正t.test调用方式
在t.test中通过data = .明确传入管道传递的数据集:ttestDELE <- deledata %>% t.test(GmeanResponse ~ SpeakGroup, mu=0, alt="two.sided", conf=0.95, var.eq=F, paired=F, data = .)确认变量类型合规
SpeakGroup需为分组变量(字符型或因子型均可,且仅包含两组值)GmeanResponse必须是数值型
可通过以下代码检查并转换:
# 查看变量类型 str(deledata) # 将SpeakGroup转换为因子(可选,推荐) deledata <- deledata %>% mutate(SpeakGroup = as.factor(SpeakGroup))清理数据异常值与缺失值
检查并处理数据中的缺失值,避免影响检验结果:# 统计各列缺失值数量 colSums(is.na(deledata)) # 删除含关键变量缺失值的行 deledata <- deledata %>% drop_na(GmeanResponse, SpeakGroup)
内容的提问来源于stack exchange,提问作者Hernán Rosario
相关产品推荐
相关产品推荐

