Я хочу написать функцию, которая вызывает lm
и строит точку разброса с линией регрессии, используя ggplot2
.
Исходя из здесь, это мой код:
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 и коэффициент в график. Я обновил свой вопрос. - person rororo   schedule 09.12.2018