1

这是我的数据框(可重现的示例)

   set.seed(42)  
n <- 6
dat <- data.frame(id=rep(1:n, 2), 
                  group= as.factor(rep(LETTERS[1:2], n/2)),
                  VD1 = rnorm(n),
                  VD2 = runif(n*2, min=0, max=100), 
                  VD3 = runif(n*2, min=0, max=100),
                  VD4 = runif(n*2, min=0, max=100),
                  VD5 = runif(n*2, min=0, max=100)) 

我正在为一个因变量“VD1”拟合以下传销

> mlm_VD1  <- lmer(formula = VD1 ~ group + (1|id)
>                   , data = dat) 

    summary(mlm_VD1)

我想通过在我的数据框的所有列(dat [,4:ncol(dat)])中创建一个循环来自动化所有其他因变量VD2,VD3,VD4,VD5的分析

然后我想将不同 mlm(mlm_VD1、mlm_VD2、mlm_VD3、mlm_VD4、mlm_VD5)的所有摘要保存在 pdf 文件中,以便在 R 环境之外读取

谢谢!

4

2 回答 2

1

我们可以使用循环。子集列名,即以“VD”开头的列名,后跟一些数字,然后遍历那些“nm1”,创建一个formulawith paste,应用lmer并获取summary

library(lme4)
nm1 <- grep('^VD\\d+', names(dat), value = TRUE)
out <- lapply(nm1, function(nm)
     summary(lmer(as.formula(paste(nm, '~ group + (1|id)')), data = dat)))

如果应该是按位置。然后使用

i1 <- 3:7
out <- lapply(i1, function(i) 
        summary(lmer(as.formula(paste(names(dat)[i],
           '~ group + (1|id)')), data = dat)))
于 2021-03-19T16:51:48.850 回答
1

添加到akrun提供的解决方案..

library(broom.mixed)
library(lme4)
library(purrr)

将列索引为 3:7

var_names <- names(dat)[3:7]

output <- map_dfr(var_names,
                  function(x){
                    formula_mlm = as.formula(paste0(x,"~ group + (1|id)"));
                    model_fit = lmer(formula_mlm,data=dat) %>% 
                      tidy(.) %>% 
                      dplyr::mutate(variable = x);
                    return(model_fit)
                    
                  })
output %>% 
+   head(.)


   # A tibble: 6 x 7
  effect   group    term            estimate std.error statistic variable
  <chr>    <chr>    <chr>              <dbl>     <dbl>     <dbl> <chr>   
1 fixed    NA       (Intercept)      7.80e-1     0.223      3.50 VD1     
2 fixed    NA       groupB          -7.59e-1     0.315     -2.41 VD1     
3 ran_pars id       sd__(Intercept)  3.74e-1    NA         NA    VD1     
4 ran_pars Residual sd__Observation  2.10e-8    NA         NA    VD1     
5 fixed    NA       (Intercept)      7.91e+1    13.2        5.98 VD2     
6 fixed    NA       groupB          -2.97e+1    18.7       -1.59 VD2
于 2021-03-19T17:00:00.070 回答