使用orchaRd绘制orchard图时遇'data'类型错误的技术求助
解决orchaRd包orchard_plot报错:'data' must be a data.frame, environment, or list
问题概述
运行以下orchard图绘制代码时触发类型错误:
orchaRd::orchard_plot(res, mod = "1", group = "site_id", data = Over, xlab = "Standardised mean difference", transfm = "none")
其中模型对象res由metafor包生成:
res <- rma.mv(S_statistic, old.variance, random = ~ Long+Lat | const, struct="SPGAU", data= Over, control=list(maxiter=1000))
已确认Over为tibble(类属性包含tbl_df、tbl、data.frame),但仍收到错误:
Error in model.frame.default(formula, data = data, ...) :
'data' must be a data.frame, environment, or list
问题原因
orchard_plot内部调用的model.frame.default函数对tibble类型兼容性不足,尽管tibble是data.frame的子类,但该函数无法正确识别这种派生类型。
解决方法
方法1:转换为标准data.frame
将tibble格式的Over转换为普通data.frame后再传入函数:
# 转换数据类型 Over_df <- as.data.frame(Over) # 重新绘图 orchaRd::orchard_plot(res, mod = "1", group = "site_id", data = Over_df, xlab = "Standardised mean difference", transfm = "none")
方法2:生成模型时使用标准data.frame
在创建rma.mv模型时直接传入标准data.frame,确保模型对象绑定的数据类型正确:
# 用标准data.frame生成模型 res <- rma.mv(S_statistic, old.variance, random = ~ Long+Lat | const, struct="SPGAU", data= as.data.frame(Over), control=list(maxiter=1000)) # 绘图 orchaRd::orchard_plot(res, mod = "1", group = "site_id", data = as.data.frame(Over), xlab = "Standardised mean difference", transfm = "none")
验证结果
使用你提供的Over数据结构测试,转换为标准data.frame后,orchard_plot可正常运行,错误消失。
内容的提问来源于stack exchange,提问作者Isma Soto Almena
相关产品推荐
相关产品推荐

