如何在R中的purrr:map函数中循环lm函数参数

如何在R中的purrr:map函数中循环lm函数参数,r,for-loop,nested,tidyverse,purrr,R,For Loop,Nested,Tidyverse,Purrr,我正在尝试在R中的purrr:map函数中嵌入的lm函数上循环。替换forloop的map函数中的map也是一个受欢迎的解决方案,但目前我在lm.fit步骤中遇到了一个反复出现的错误 以下是生成的代码示例: df <-tibble(var1 = rnorm(100,0,1), var2 = rnorm(100,0,1), var3 = rnorm(100,0,1), var4 = rnorm(100,0,1),

我正在尝试在R中的purrr:map函数中嵌入的lm函数上循环。替换forloop的map函数中的map也是一个受欢迎的解决方案,但目前我在lm.fit步骤中遇到了一个反复出现的错误

以下是生成的代码示例:


df <-tibble(var1 = rnorm(100,0,1),
            var2 = rnorm(100,0,1),
            var3 = rnorm(100,0,1),
            var4 = rnorm(100,0,1),
            var5 = rnorm(100,0,1),
            var6 = rnorm(100,0,1))



var_list<-df %>% 
  select(var1,var2,var3) %>% colnames()

empty_list <- list()

for (i in var_list){
  
empty_list[[(match(i,var_list))]] <-df %>% 
  nest(-var5,-var6) %>% 
  mutate(fit = map(data, ~ lm(noquote(i) ~ var4, data = .))) %>% 
  mutate(augment = map(fit, ~ broom::augment(.))) 

}


df%colnames()
空列表%
突变(fit=map(数据,~lm(noquote(i)~var4,数据=)))%>%
变异(augment=map(fit,~broom::augment())
}

我们可以使用
粘贴创建公式,最好初始化特定长度的空列表,因为我们知道
长度
基于
长度(变量列表)

空列表%
变异(augment=map(fit,~broom::augment())
}

lm的
lm
公式构造可以使用
paste
empty_list <- vector('list', length(var_list))
names(empty_list) <- var_list



for (i in var_list){
  
 empty_list[[i]] <- df %>% 
     nest(-var5,-var6) %>% 
     mutate(fit = map(data, ~ lm(paste0(i, '~ var4'), data = .))) %>% 
     mutate(augment = map(fit, ~ broom::augment(.))) 
}