使用dmetar包InfluenceAnalysis()函数遇行数不匹配错误求助
解决dmetar::InfluenceAnalysis()函数报错:arguments imply differing number of rows: 16, 18
问题重现
运行元分析模型后调用InfluenceAnalysis()时触发行数不匹配错误:
library(tidyverse); library(dmetar); library(meta); library(metafor) data(ThirdWave) m.gen <- metagen(TE = TE, seTE = seTE, studlab = Author, data = ThirdWave, sm = "SMD", common = FALSE, random = TRUE, method.tau = "REML", method.random.ci = "HK", title = "Third Wave Psychotherapies") m.gen.inf <- InfluenceAnalysis(m.gen, random = TRUE) # Error in data.frame(..., check.names = FALSE): arguments imply differing number of rows: 16, 18
原因与解决方案
1. 更新相关包版本
该错误多由dmetar与meta包版本不兼容导致,旧版本dmetar处理meta生成的metagen对象时,易出现内部元素行数不匹配问题。执行以下命令更新包:
update.packages(c("dmetar", "meta", "metafor"))
更新后重新运行代码,多数场景下可解决问题。
2. 改用metafor包的影响力分析函数
若更新包后问题仍存在,可直接使用metafor包的influence.rma.uni()函数完成分析,兼容性更稳定:
# 将metagen对象转换为metafor的rma.uni对象 m.gen.rma <- as.rma(m.gen) # 执行影响力分析 m.gen.inf <- influence(m.gen.rma) # 查看结果 print(m.gen.inf) # 绘制诊断图 plot(m.gen.inf)
3. 调整模型拟合参数
部分情况下,method.random.ci = "HK"参数会导致模型内部元素生成异常。可尝试去掉该参数重新拟合模型:
m.gen <- metagen(TE = TE, seTE = seTE, studlab = Author, data = ThirdWave, sm = "SMD", common = FALSE, random = TRUE, method.tau = "REML", title = "Third Wave Psychotherapies")
再调用InfluenceAnalysis()尝试。
内容的提问来源于stack exchange,提问作者MingChe
相关产品推荐
相关产品推荐

