【发布时间】:2018-12-09 20:21:00
【问题描述】:
我想编写一个调用lm 并使用ggplot2 绘制带有回归线的散点的函数。
来自here,这是我的代码:
fun <- function(m, n, o, p) {
library(ggplot2)
data <- as.data.frame(read.table(file = m, header = T, dec = ".", sep = "\t" ))
fit <- lm(as.formula(n ~ 0 + o), data)
text<-paste("R^2 = ", summary(fit)$adj*100, " %; coefficient = ", fit$coefficients, sep="")
ggplot(data, aes(x=!!rlang::enquo(o), y = !!rlang::enquo(n))) + geom_point(aes(colour = !!rlang::enquo(p))) + geom_abline(intercept=0, slope=fit$coefficients[1], color='#2C3E50', size=1.1) + geom_text(aes(x = 1, y = 1, label = text))
}
示例输入文件:
columna columnb string
3338240000 97.65 ccc
3453970000 98.8 ccc
3559920000 99.5 aaa
1434400000 87.8 ccc
2953560000 99.8 ccc
3172212857 99.15 ccc
3286080000 99.3 ccc
3750630000 99.3 ccc
4215180000 99.7 ccc
2836200000 99.85 ccc
229830000 93.8 rrr
39120000 94.5 ppp
1770180000 99 ccc
当我调用函数时
fun("input", columna, columnb, string)
我得到一个错误。如何将变量(列名)正确传递给函数内的 lm?
【问题讨论】:
-
我不使用
geom_smooth的原因是,我想将R2 的值和系数写入绘图。我更新了我的问题。
标签: r function ggplot2 lm rlang