绘制Meta分析森林图时出现“invalid input 'Guti”错误求助
Meta分析森林图绘制报错解决
问题重现
执行Meta分析森林图代码:
meta1.for = update(meta1, byvar=EV, studlab=paste(Author, Year)) forest(meta1.for)
出现报错:
Error in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : invalid input 'Guti>
尝试加载ggplot2、安装forestplot后问题依旧,且extrafont包未安装。
问题原因
报错里的invalid input 'Guti'指向作者姓名中包含非ASCII特殊字符(比如带重音的字母,如Gutiérrez里的é),R的grid绘图系统无法解析这类字符,导致森林图绘制失败。
解决步骤
清理特殊字符(核心解决方法)
使用stringi包批量转换非ASCII字符为等效ASCII字符:# 安装并加载stringi包 install.packages("stringi") library(stringi) # 转换数据框中Author列的特殊字符 # 替换df为你的数据集名称 df$Author <- stri_trans_general(df$Author, "Latin-ASCII") # 重新生成meta对象并绘制森林图 meta1.for = update(meta1, byvar=EV, studlab=paste(Author, Year)) forest(meta1.for)也可以手动修改Author列的特殊字符,比如把
Gutiérrez改为Gutierrez。正确安装并使用extrafont包
如果确实需要调整字体,先完成安装和字体导入:install.packages("extrafont") library(extrafont) # 导入系统字体(仅首次运行需要,耗时较长) font_import() # 加载字体 loadfonts()forestplot包适配
若使用forestplot包绘制,同样需要先清理特殊字符,再执行绘图代码:library(forestplot) # 示例代码,需替换为你的实际数据列 forestplot(labeltext = cbind(df$Author, df$Year), mean = df$effect_size, lower = df$ci_lower, upper = df$ci_upper)
内容的提问来源于stack exchange,提问作者Chaewon0225
相关产品推荐
相关产品推荐

