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

如何在R的meta包forest plot中移除‘subgroup =’前缀?

解决meta包森林图移除subgroup前缀仅保留亚组名称的问题

meta包的forest()函数默认会将亚组列名(如你的subgroup)和亚组值拼接为subgroup = 亚组名称的格式显示,直接修改数据框列名会导致R自动命名为X,出现X = 亚组名称的问题。以下是两种可行的解决方法:

方法1:修改meta对象的亚组标签字段

metaprop()生成的meta对象中,bylab字段存储了森林图中显示的亚组标签文本。我们可以用gsub()替换掉subgroup = 前缀:

# 处理灵敏度分析的meta对象
subgroup_sens3_filtered$bylab <- gsub("subgroup = ", "", subgroup_sens3_filtered$bylab)
# 处理特异度分析的meta对象
subgroup_spec3_filtered$bylab <- gsub("subgroup = ", "", subgroup_spec3_filtered$bylab)

# 重新绘制森林图
forest(subgroup_sens3_filtered, xlab = "Sensitivity",
       col.square="cornflowerblue",
       col.square.lines="navy",
       col.diamond="red",
       colgap.left = "18mm")

forest(subgroup_spec3_filtered, xlab = "Specificity",
       col.square = "cornflowerblue",
       col.square.lines = "navy",
       col.diamond = "red",
       colgap.left = "18mm")

方法2:调用forest时自定义亚组标签

通过subgroup.labels参数手动指定亚组名称,确保顺序与meta对象中的亚组顺序一致:

# 获取灵敏度分析的亚组名称(保持原顺序)
sens_subgroups <- unique(subgroup_sens3_filtered$byvar)
# 获取特异度分析的亚组名称
spec_subgroups <- unique(subgroup_spec3_filtered$byvar)

# 绘制灵敏度森林图
forest(subgroup_sens3_filtered, 
       xlab = "Sensitivity",
       col.square="cornflowerblue",
       col.square.lines="navy",
       col.diamond="red",
       colgap.left = "18mm",
       subgroup.labels = sens_subgroups)

# 绘制特异度森林图
forest(subgroup_spec3_filtered, 
       xlab = "Specificity",
       col.square = "cornflowerblue",
       col.square.lines = "navy",
       col.diamond = "red",
       colgap.left = "18mm",
       subgroup.labels = spec_subgroups)

说明:

你之前尝试的print.subgroup.name = TRUE参数是控制是否显示亚组列名(即subgroup这个词),而非修改标签格式;print.subgroup.labels = FALSE会直接隐藏所有亚组标签,所以导致亚组名称也消失,这两个参数组合无法实现你的需求。

内容的提问来源于stack exchange,提问作者Priya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:12:22