我的数据框如下:
samples.L samples.T le.1 le.2 le.3 le.4 le.5
10 1.0 9.683726 9.691982 9.704387 9.719390 9.735400
10 3.5 9.828530 9.829962 9.832273 9.835296 9.838709
25 1.0 24.675467 24.677010 24.679439 24.682560 24.685718
25 3.5 24.822328 24.822601 24.823026 24.823410 24.823209
现在我想在自变量samples.L
和samples.T
之间进行线性回归,并分别对每个响应变量le.?
(?= 1,2,3,4,5)进行线性回归,以便我可以得到5个型号吗?
我如何使用apply family函数或其他方法来实现它?
答案 0 :(得分:0)
您可以根据samples.L
和samples.T
创建适合其他变量的线性模型的函数。
lm_func <- function(y) lm(y ~ samples.L + samples.T, data = data)
然后,您可以使用lapply()
将此功能应用于每个所需的列。
lapply(data[,3:6], lm_func)
此外,您可以将tidyverse
包与broom
包一起使用,以简化输出。
library(tidyverse)
library(broom)
map_dfr(data[,3:6], function(x) summary(lm_func(x)) %>% glance())
map_dfr(data[,3:6], function(x) summary(lm_func(x)) %>% tidy())
更好的是,您可以执行以下操作。
fit <- lm(cbind(le.1, le.2, le.3, le.4) ~ samples.L + samples.T, data = data)
summary(fit) %>% map_dfr(glance)
summary(fit) %>% map_dfr(tidy)