R 通过列循环分析不同的因变量

R 通过列循环分析不同的因变量,r,loops,mlm,R,Loops,Mlm,这里是我的数据框(可复制示例) set.seed(42) n我们可以使用循环。将列名子集,即以“VD”开头,后跟一些数字的列名,然后循环这些“nm1”,使用粘贴创建一个公式,应用lmer,并获取摘要 library(lme4) nm1 <- grep('^VD\\d+', names(dat), value = TRUE) out <- lapply(nm1, function(nm) summary(lmer(as.formula(paste(nm, '~ group +

这里是我的数据框(可复制示例)

set.seed(42)

n我们可以使用循环。将列名子集,即以“VD”开头,后跟一些数字的列名,然后循环这些“nm1”,使用粘贴创建一个
公式
,应用
lmer
,并获取
摘要

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)))
库(lme4)

nm1添加到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
var\u名称%
dplyr::mutate(变量=x);
返回(型号_-fit)
})
输出%>%
+头(.)
#一个tibble:6x7
效应组项估计标准误差统计变量
1固定NA(截距)7.80e-1 0.223 3.50 VD1
2固定NA组B-7.59e-1 0.315-2.41 VD1
3运行部件id sd(截距)3.74e-1 NA VD1
4随机部分剩余sd观测值2.10e-8 NA VD1
5固定NA(截距)7.91e+113.2 5.98 VD2
6固定NA组B-2.97e+1 18.7-1.59 VD2

谢谢,我如何不按名称而是按数据框中的位置对列进行索引nm1@Gianluca更新了帖子非常感谢,它很有效。如何将不同传销的汇总表保存到pdf@Gianluca您指的是打印的汇总表还是data.frame?打印的汇总表再次感谢!如果不手动定义c(“VD1”、“VD2”、“VD3”、“VD4”、“VD5”),我只想给出列的位置,然后我想让这些列的标题字符串出现在输出的“变量”列中,会怎么样?
i1 <- 3:7
out <- lapply(i1, function(i) 
        summary(lmer(as.formula(paste(names(dat)[i],
           '~ group + (1|id)')), data = dat)))
library(broom.mixed)
library(lme4)
library(purrr)
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