首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中的一组不同的变量和模型上创建循环

如何在R中的一组不同的变量和模型上创建循环
EN

Stack Overflow用户
提问于 2021-06-08 20:25:01
回答 3查看 53关注 0票数 2

下面的代码首先为mpg ~ disp打印lm,然后为mpg ~ disp + wt打印。我想在模型上创建另一个循环(请注意,第二个lm是我的personalize模型,为了简单起见,我们可以假设它是lm)。我如何在不同的模型上循环?

代码语言:javascript
复制
data("mtcars")

formulas <- list(
  mpg ~ disp,
  mpg ~ disp + wt
)

    models <- list(lm, lm)
    
    res <- vector("list", length = length(formulas))
    
    for(i in seq_along(formulas)){
      res[[i]] <- lm(formulas[[i]], data = mtcars)
    
    }
    res
    
    or
    
    lapply(formulas, lm, data = mtcars)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-08 20:46:26

您可以使用嵌套的lapply -

代码语言:javascript
复制
lapply(models, function(x) lapply(formulas, function(y) x(y, data = mtcars)))
票数 2
EN

Stack Overflow用户

发布于 2021-06-08 20:52:43

我喜欢使用tidyverse的purrr来实现这样的多模型方法:

代码语言:javascript
复制
pacman::p_load(dplyr, purrr)
data("mtcars")

d <- crossing(formula = c(mpg ~ disp, mpg ~ disp + wt),
              model = list("lm", "glm")) %>% 
  
  mutate(result = pmap(.l = list(model, formula),
                       .f = function(m, f) do.call(m, args = list(formula = f, data = substitute(mtcars)))))
票数 2
EN

Stack Overflow用户

发布于 2021-06-08 23:56:35

我们可以在base R中使用outer,而且应该很快

代码语言:javascript
复制
out <- c(outer(models, formulas, Vectorize(function(x, y) list(x(y, data = mtcars)))))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67886888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档