Предполагая, что вы поместите регрессию между любыми двумя комбинациями столбцов, это может быть решением.Имейте в виду, что в зависимости от того, что вам в конечном итоге понадобится в результирующем файле data.frame, код будет меняться.
A <- matrix(c(1:3288),nrow=12)
B <- matrix(c(3289:6576),nrow=12)
library(broom)
library(dplyr)
results <- NULL
for (i in 1:ncol(A)){
for (j in 1:ncol(B)){
model_<-lm(A[,i]~B[,j])
results<-bind_rows(results,
bind_cols(columnx = i,
columny = j,
glance(model_),
intercept=model_$coefficients[1],
slope=model_$coefficients[2]
)
)
}
}
Если вам понадобится только парная регрессия в виде столбца 1 в A, будет установлен столбец 1 в B, 2 с 2 и т. Д., Более элегантное решение может быть написано с использованием картыиз мурлыкающего пакета.Надеюсь, это поможет.
Редактировать: только фитинг 1 в A с 1 в B и т. Д.
library(purrr)
library(dplyr)
library(broom)
A<-data.frame(A)
B<-data.frame(B)
results <- map2_df(.x = A,
.y = B, ~ {
model_<-lm(.y ~ .x)
bind_cols(glance(model_),
intercept=model_$coefficients[1],
slope=model_$coefficients[2]
)
})
Вот мурлыканье документация .Это очень ясно объясняет, как работает map2_df.Он в основном выполняет циклы по двум спискам одновременно, выполняя одну функцию и возвращая data.frame.