使用metafor绘制森林图时如何保留均值与标准差的末尾零
解决方法
你遇到的末尾零自动省略问题是因为forest()函数接收数值型变量时会默认简化小数展示,提前将需要展示的均值、标准差字段格式化为固定两位小数的字符型即可解决,操作步骤如下:
- 预处理数据,格式化数值列
使用format()函数的nsmall参数强制保留两位小数,trim=TRUE去掉多余空格避免对齐异常:
# base R写法,不需要额外加载包 bmi_awm$Intervention_mean_fmt <- format(bmi_awm$Intervention_mean, nsmall = 2, trim = TRUE) bmi_awm$Intervention_SD_fmt <- format(bmi_awm$Intervention_SD, nsmall = 2, trim = TRUE) bmi_awm$Comparison_mean_fmt <- format(bmi_awm$Comparison_mean, nsmall = 2, trim = TRUE) bmi_awm$Comparison_SD_fmt <- format(bmi_awm$Comparison_SD, nsmall = 2, trim = TRUE)
- 修改森林图绘制代码
替换ilab参数里的数值列为格式化后的字符列,同时修正你原有代码里digits=2的语法错误(原有代码将该参数放在单独括号内属于无效写法):
forest(meta2, showweights = TRUE, ilab.xpos = c(-24.5,-22, -19.5, -16, -13.75, -11), ilab = cbind(bmi_awm$Intervention_n, bmi_awm$Intervention_mean_fmt, bmi_awm$Intervention_SD_fmt, bmi_awm$Comparison_n, bmi_awm$Comparison_mean_fmt, bmi_awm$Comparison_SD_fmt), digits = 2, ilab.pos = 4, rows = c(48), ylim = c(-1, 51.5), xlim = c(-35.5, 14), at = c(-7, 0, 7))
补充说明
digits=2参数控制森林图中效应值、置信区间的小数保留位数,和ilab内的自定义格式化互不影响- 如果需要调整其他列的小数展示规则,对应修改
format()的参数即可
内容的提问来源于stack exchange,提问作者Mary Rozga
相关产品推荐
相关产品推荐

