我很好奇如何编辑Jayden的以下解决方案,使方程的格式可以是y=bx+a或y=bx-a?我想让它看起来尽可能干净。
lm_eqn = function(m) {
l <- list(a = format(coef(m)[1], digits = 2),
b = format(abs(coef(m)[2]), digits = 2),
r2 = format(summary(m)$r.squared, digits = 3));
if (coef(m)[2] >= 0) {
eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,l)
} else {
eq <- substitute(italic(y) == a - b %.% italic(x)*","~~italic(r)^2~"="~r2,l)
}
as.character(as.expression(eq));
}
我已尝试在%.%中消除这引发了一个错误,我已经尝试反转顺序,但函数的if/else部分的语法有问题。我还想让它成为公式的格式,使得coeff(a)不带负号。abs(a)返回|a|。感谢您的意见!非常感谢!
这来自另一个线程(在图上添加回归线方程和R2)
如果你想要b*x+a形式的,那么只需:
if (coef(m)[2] >= 0) {
eq <- substitute(italic(y) ==
b %.% italic(x) + a*","~~italic(r)^2~"="~r2, l)
} else {
eq <- substitute(italic(y) ==
- b %.% italic(x) + a *"," ~~ italic(r)^2 ~"="~r2, l)
}
编写R表达式需要理解有一个语法规则:标记/分隔符/标记,但可以使用"+"或"-"作为一元分隔符。中绘图符号表的上部?plotmath具有可接受的分隔符。空格和换行符将被忽略。
您看到了什么错误?这适用于我按照要求提供bx ± a
。您必须将abs()
移动到a
而不是b
的定义,并测试coef(m)[1]
而不是2…
lm_eqn = function(m) {
l <- list(a = format(abs(coef(m)[1]), digits = 2),
b = format(coef(m)[2], digits = 2),
r2 = format(summary(m)$r.squared, digits = 3));
if (coef(m)[1] >= 0) {
eq <- substitute(italic(y) == b %.% italic(x) + a*","~~italic(r)^2~"="~r2,l)
} else {
eq <- substitute(italic(y) == b %.% italic(x) - a*","~~italic(r)^2~"="~r2,l)
}
as.character(as.expression(eq));
}