You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:40:29