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