Как насчет этого,
Сначала введите некоторые данные в кадры.
x.values<-data.frame(
x_1 = rnorm(10),
x_2 = rnorm(10),
x_3 = rnorm(10)
)
y.values<-data.frame(y_1 = rnorm(10),
y_2 = rnorm(10),
y_3 = rnorm(10)
)
Затем создайте формулу с регулярным выражением
lmformulas <- list(as.formula(paste(grep("y_[1]", names(y.values), value = TRUE), paste(grep("x_[1]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ ")),
as.formula(paste(grep("y_[2]", names(y.values), value = TRUE), paste(grep("x_[2]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ ")),
as.formula(paste(grep("y_[3]", names(y.values), value = TRUE), paste(grep("x_[3]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ "))
)
[[1]]
у_1 ~ х_1
[[2]]
у_2 ~ х_2
[[3]]
у_3 ~ х_3`
Finnaly, вы можете получить желаемый результат "сразу"
lm_result <- lapply(lmformulas, function(x) {
lm(x, data = cbind(y.values,x.values))
}
)
[[1]]
Вызов:
lm (формула = x, данные = cbind (y.values, x.values))
Коэффициенты:
(Перехват) x_1
-0,6081 0,1041
[[2]] * * тысячу двадцать-пять
Вызов:
lm (формула = x, данные = cbind (y.values, x.values))
Коэффициенты:
(Перехват) x_2
-0,452157 -0,001287
[[3]]
Вызов:
lm (формула = x, данные = cbind (y.values, x.values))
Коэффициенты:
(Перехват) x_3
-0,1945 -0,1830