【发布时间】:2018-01-09 19:23:13
【问题描述】:
我在 R 中编写函数时遇到了一个问题。 我想比较这个函数中的两个变量,我想绘制比较的回归线。我还想添加回归线的信息,包括方程和 R^2。我已经尝试过的 lm_eqn 方式在我的情况下不起作用,这是我尝试时的代码。不知道为什么,请帮忙!
lm_eqn <- function(df){
m <- lm(y ~ x, df);
eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
list(a = format(coef(m)[1], digits = 2),
b = format(coef(m)[2], digits = 2),
r2 = format(summary(m)$r.squared, digits = 3)))
as.character(as.expression(eq));
}
compareFunction <- function(my_dataset, var1, var2) {
ggplot(data = my_dataset,
aes(x = my_dataset[[var1]],
y = my_dataset[[var2]])) +
geom_point() +
geom_smooth(method = 'lm', formula = 'y ~ x') +
geom_text(x = 100, y = 100, label = lm_eqn(my_dataset), parse = TRUE)
}
【问题讨论】:
-
似乎对我有用:
x = runif(100)y = runif(100)+xdf = data.frame(x,y)compareFunction(df,"x","y") -
嗯,你的问题是围绕情节的标签?我首先建议将
geom_text(x = 100, y = 100, label = lm_eqn(my_dataset), parse = TRUE)替换为ggtitle(lm_eqn(my_dataset)) -
@Gary:你也可以使用
ggpmisc包stackoverflow.com/a/54135578/786542中的stat_poly_eq