假设您将在任意两个列组合之间拟合回归,这可能是一个解决方案。请记住,根据最终需要的结果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]
)
)
}
}
如果您只需要以A中列1的形式进行成对回归,将与B中的列1、2和2等相匹配,那么可以使用purr包中的map编写更优雅的解决方案。希望这有帮助。
编辑:仅在A中安装1,在B中安装1,依此类推
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]
)
})
这是咕噜声
documentation
.很清楚地解释了map2_df是如何工作的。它基本上在执行一个函数并返回data.frame的同时循环两个列表。