R语言probe_interaction报错:class需为字符向量而非列表求助
解决interactions包probe_interaction函数的报错问题
我来帮你排查这个报错,从你提供的代码和错误信息来看,主要有两个关键问题导致了这个错误:
1. 参数传递类型错误:需使用变量名字符串而非裸变量
interactions::probe_interaction() 函数要求 pred 和 modx 参数必须是字符串形式的变量名,而你代码里直接写了裸变量(pred=d, modx=Age)。R会把这些裸变量解析为数据对象,而不是变量名本身,这就导致函数内部处理时触发了「类型不匹配」的错误——它需要字符向量,却收到了列表类型的输入。
2. 模型对象名大小写不匹配(潜在问题)
你定义的模型对象是小写的 lms,但调用函数时写的是大写的 lmS。R是严格区分大小写的,这会导致R找不到对应的模型对象。虽然你的报错信息来自 lmNS 的调用,但这个笔误也需要修正,避免后续其他问题。
修正后的代码
# 修正模型对象名(小写s改为大写S,和后续调用统一) lmS <- lm(RSFC_Agebyd_DAN ~ 1 + Age + d + RT + IO + CR + Age:d + Age:RT + Age:IO + Age:CR, data = S) lmNS <- lm(RSFC_Agebyd_DAN ~ 1 + Age + d + RT + IO + CR + Age:d + Age:RT + Age:IO + Age:CR, data = NS) # 将pred和modx参数改为字符串形式 probe_interaction(lmS, pred = "d", modx = "Age") probe_interaction(lmNS, pred = "d", modx = "Age")
额外排查建议
如果修正后仍然报错,可以做以下检查:
- 确认数据集
S和NS中确实存在Age、d等所有模型用到的变量,没有拼写错误 - 先用
summary(lmS)和summary(lmNS)检查模型是否成功拟合,确保没有因数据问题导致模型本身出错 - 可以尝试更新
interactions和jtools包到最新版本(虽然你已经重装过,但版本兼容问题也可能导致这类错误)
内容的提问来源于stack exchange,提问作者daisuke
相关产品推荐
相关产品推荐

