使用R语言绘制Forest Plot遇报错,求代码修正方案
修复forestplot包绘制森林图时的边界识别错误
我帮你排查了这个报错的原因,问题出在cochrane_from_rmeta数据框的结构与forestplot()函数的参数匹配上——函数无法正确识别汇总行的上下边界值,同时数据行和文本表格的对应关系需要调整。下面是修正后的完整代码:
library(forestplot) # 修正统计量数据框:确保汇总行的结构符合函数要求,且行数与文本表格完全匹配 cochrane_from_rmeta <- structure( list( mean = c(NA, NA, 1.62, 1.48, 1.43, 1.55, 1.60, 1.63, 1.48, 1.43, 1.43, 1.41, NA), lower = c(NA, NA, 1.23, 0.95, 1.04, 1.15, 1.01, 1.83, 1.15, 1.04, 1.07, 0.79, NA), upper = c(NA, NA, 2.14, 2.31, 1.95, 2.09, 2.53, 5.68, 1.91, 1.95, 1.92, 2.54, NA) ), .Names = c("mean", "lower", "upper"), row.names = c(NA, -13L), class = "data.frame" ) # 修正文本表格:确保最后一列OR值与统计量数据框的mean完全对应 tabletext <- cbind( c("", "Subgroup", "RRMS", "<40 years-old", "≥ 40 years-old", "Female", "Male", "First-Line", "Non First-Line", "Baseline GdE Lesions","No Baseline GdE Lesions", "Direct Switch from NTZ", NA), c("Discontinuation", "(DMF)", "244", "93", "233", "238", "88", "27", "299", "63", "240","41", NA), c("Discontinuation", "(FTY)", "148", "62", "124", "137", "49", "7", "179", "32", "138","57", NA), c("", "OR", "1.62", "1.48", "1.43", "1.55", "1.60", "1.63", "1.48", "1.43", "1.43", "1.41", NA) ) # 绘制森林图:关键是确保is.summary的标记与汇总行完全对应,同时调整边界识别逻辑 forestplot( tabletext, cochrane_from_rmeta, new_page = TRUE, is.summary = c(TRUE, TRUE, rep(FALSE, 10), TRUE), clip = c(0.1, 2.5), xlog = TRUE, col = fpColors(box="royalblue", line="darkblue", summary="royalblue"), # 新增参数:明确告诉函数汇总行不需要计算置信区间 summary = c(rep(TRUE, 2), rep(FALSE, 10), TRUE) )
主要修改点说明:
- 新增
summary参数:明确标记哪些行是汇总行,让函数知道这些行不需要处理置信区间边界,避免识别错误 - 确认
tabletext的最后一列OR值与cochrane_from_rmeta的mean列完全一致,保证数据对应关系正确 - 确保
is.summary的向量长度(13个元素)与数据框、文本表格的行数完全匹配,避免行不对应导致的边界识别混乱
内容的提问来源于stack exchange,提问作者Carrie




