在 substitute() 表达式中添加换行符

Adding a newline in a substitute() expression

我正在尝试使用来自回归模型的相关数据来注释 ggplot 中的绘图。 我遵循了建议 in this SO post 并尝试修改函数以在图中的 newline 中添加几个附加项。 这是我对新功能的尝试:

lm_eqn = function(m){
  eq <- substitute(italic(y) == a %.% italic(x)^b*","~~italic(r)^2~"="~r2*","~~italic(n)~"="~nn*","~~italic(p-value)~"="~pv, 
                   list(a = format(exp(coef(m)[1]), digits = 3), 
                        b = format(coef(m)[2], digits = 3), 
                        r2 = format(summary(m)$r.squared, digits = 3),
                        nn=format(summary(m)$df[2]),
                        pv=format(summary(m)$coefficients[,4][2])))
  as.character(as.expression(eq));                 
}

它产生了预期的输出:全部在一行中。但我想将文本分成两行,第二行以 italic(n)= 开头。但是如果我引入一个 \n,它会在找到 \n 时抛出一个错误。如果我在引号内引入 \n:"\n" 那么它似乎被忽略并且文本保留在一行中。我还没有找到任何关于如何在这样的表达式中引入换行符的参考。非常感谢您的帮助。

谢谢。

编辑:在@Tim 发表评论后,我提出了一个重写的代码和调整后的问题。

\n 不能用在 plotmath 表达式中。您或许可以将表达式分成两部分,然后使用 annotate 在您想要的地方添加表达式。或者,使用 atop。看看这个 post -> Line break in expression()?