Meu dataframe é como:
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
Agora eu quero operar a regressão linear entre variáveis independentes samples.L
e samples.T
e, respectivamente, cada uma das variáveis de resposta le.?
(? = 1,2,3,4,5), para que eu pudesse obter 5 modelos?
Como eu poderia aplicar a função familiar ou outro método para realizá-la?
Respostas:
0 para resposta № 1Você pode criar uma função que se ajusta a um modelo linear das outras variáveis em termos de samples.L
e samples.T
.
lm_func <- function(y) lm(y ~ samples.L + samples.T, data = data)
Você pode então usar lapply()
para aplicar esta função a cada uma das colunas desejadas.
lapply(data[,3:6], lm_func)
Além disso, você pode usar o tidyverse
pacotes com o broom
pacote para simplificar suas saídas.
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())
Melhor ainda, você pode fazer o seguinte.
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)