R语言森林图作者列表添加引用上标问题求助
解决森林图中作者列表添加参考文献上标的问题
我明白你想在森林图的作者名称旁加上上标形式的参考文献编号,之前尝试的代码因为对expression和parse的用法有误导致报错,下面给你几个可行的解决方案:
错误原因分析
你之前的代码parse(text(paste(expression(aut,"^",ref))))存在两个核心问题:
expression()里的aut和ref是变量名,不是实际的作者/编号值,拼接后无法被parse正确解析parse()需要的是合法的R表达式文本,直接拼接表达式对象会导致格式混乱,进而触发报错
解决方案
1. 生成带上方标的表达式列表(通用方法)
我们可以用mapply结合bquote来逐个生成带标的作者表达式,这个方法适用于大多数森林图绘制工具:
aut <- c("a, 2018", "c, 2018", "v, 2018", "f, 2018", "f, 2017", "f, 2015", "y, 2014","ya, 2014","y, 2014","j, 2013", "j, 2011", "j, 2011","h, 2011", "g, 2011","e, 2010","r, 2008","f, 2008", "gh, 2007","h, 2006","h, 2005","h, 2004","h, 2003", "h, 2002", "g, 2002","f, 2002","f, 2001","f, 2001", "208136/016, 2001", "208136/007, 2001", "f, 2000","f, 2000", "g, 1999","g, 1999", "g, 1998", "d , 1998","g, 1998","go, 1997","g, 1995","g, 1994", "r, 1991","r, 1989","r, 1988","r, 1987","r, 1983", "g, 1982","g, 1981","g, 1975","g, 1975") ref <- as.character(seq(1:48)) # 生成每个作者带上方标的表达式 aut_with_ref <- mapply(function(author, ref_num) { bquote(.(author) ^ .(ref_num)) }, aut, ref, SIMPLIFY = FALSE)
2. 在meta包的森林图中使用
如果你用meta包绘制森林图,可以直接将生成的表达式列表作为研究标签传入:
library(meta) # 模拟meta分析数据(替换成你的真实数据) meta_dat <- data.frame( studlab = aut, TE = rnorm(48, 0, 0.5), # 效应量 seTE = runif(48, 0.1, 0.3) # 标准误 ) # 创建meta分析对象 meta_obj <- metagen(TE, seTE, studlab = studlab, data = meta_dat) # 绘制森林图,替换研究标签为带标的表达式 forest(meta_obj, studlab = aut_with_ref)
3. 在ggplot2中绘制森林图
如果你用ggplot2自定义森林图,可以生成带^符号的文本,再通过parse=TRUE解析上标:
library(ggplot2) # 准备绘图数据 plot_dat <- data.frame( study_label = paste0(aut, "^", ref), # 生成带^的文本 effect = rnorm(48, 0, 0.5), se = runif(48, 0.1, 0.3), y_pos = seq_along(aut) # 每个研究的y轴位置 ) # 绘制森林图 ggplot(plot_dat, aes(x = effect, y = y_pos)) + geom_point(size = 2) + geom_errorbarh(aes(xmin = effect - 1.96*se, xmax = effect + 1.96*se), height = 0.2) + # 绘制带标的作者名称,parse=TRUE解析上标 geom_text(aes(label = study_label), x = -2, hjust = 1, parse = TRUE) + labs(x = "Effect Size", y = "Studies") + theme_bw()
这样就能在森林图中成功显示带参考文献上标的作者列表了。
内容的提问来源于stack exchange,提问作者XXXX992
相关产品推荐
相关产品推荐

