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

ggarrange使用expression函数报错:无法将expression转为data.frame

问题分析与解决方案

这个报错属于参数类型不匹配的编程问题,不是expression()函数本身不能用,而是你没踩中ggpubr::ggarrange()的参数规则:

报错核心原因

ggarrange()的labels参数并不支持直接传入expression()生成的对象。该参数期望接收字符向量、或可转换为简单文本的类型,但你传入的expression()对象属于特殊的表达式类,函数内部尝试将其转换为数据框时直接触发了类型转换失败,也就是你看到的:

Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class ""expression"" to a data.frame

解决方法

你可以通过parse(text = ...)将带下标格式的字符向量转换为可被ggarrange识别的表达式向量,具体代码如下:

# 定义带LaTeX式下标语法的字符向量
mylabel_text <- c("PM[2.5]", "SO[2]", "O[3]")
# 转换为可解析的表达式向量
mylabel <- parse(text = mylabel_text)
# 正常调用ggarrange
ggpubr::ggarrange(fig[[1]], fig[[2]], fig[[3]], ncol=1, nrow=3, labels = mylabel)

补充说明

你之前用expression("PM"[2.5], "SO"[2], "O"[3])生成的是长度为3的expression对象,但ggarrange的labels逻辑无法直接处理这种类型;而parse(text = ...)生成的表达式向量,会被函数正确解析并渲染出带下标格式的标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:15:17