我很好奇如何编辑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部分中出现语法问题。我也想在方程式被格式化的情况下进行,使得系数(a)在没有负号的情况下呈现。 abs(a)返回| a |。感谢您的任何意见!非常感谢!
开始的答案 0 :(得分:1)
如果你想用b * x +表格,那么只需:
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表达式需要了解语法规则:token / separator / token,但您可以使用“+”或“ - ”作为一元分隔符。在'plotmath中的plotmath符号表的上半部分具有可接受的分隔符。空格和换行被忽略。
答案 1 :(得分:0)
你看到了什么错误?这对我来说可以按要求提供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));
}