有没有办法在 "paste" 中正确显示 "expression"?

Is there a way to show an "expression" correctly in a "paste"?

我在 R 中有这样的表达式:

ylabel <- expression("NO"[3]*"-N-Concentration [mg/l]")

这应该是我的 ggboxplot 上 y 轴的标签。 因为 y 标签离轴太近,我使用 \n(新行)来增加到轴的距离:

ylab=paste(ylabel,"\n")

但是在我的绘图上,我的标签将不会如我预期的那样正确显示:

Wrong formated label

有人知道如何解决这个问题吗? 我已经搜索了论坛,但不幸的是仍然没有成功。

编辑: 我只是添加了一个小例子来重现问题:

ylabel <- expression("NO"[3]*"-N-Concentration [mg/l]")
par(mar=c(6,8,1,1))
y=c(1,1,2,2,3,4,5)
plot(y, ylab=paste(ylabel,"\n"))

考虑使用 bquote,它确实用 atop

计算表达式
par(mar =  c(3, 6,  2, 2))
 plot(1:10, ylab = bquote(atop(NO[3]*-N-Concentration [mg/l], "\n")))

-输出


或者如果我们需要表达式

par(mar =  c(3, 6,  2, 2))
ylabel <- expression(atop(NO[3]*-N-Concentration [mg/l], "\n"))
plot(y, ylab=ylabel)

-输出

---

或者如评论中提到的 OP 如果 [mg/l] 需要按原样显示,则只需引用它

ylabel <- expression(atop(NO[3]*-N-Concentration*" [mg/l]", "\n"))
par(mar =  c(3, 6,  2, 2))
plot(1:10, ylab = ylabel)

我们可以使用 substitute:

plot(y, 
     ylab=substitute(paste("NO"[3]*-N-Concentration [mg/l],"\n"), list(ylabel[2])))