【问题标题】:How can I combine two lists of lm models element-wise?如何按元素组合两个 lm 模型列表?
【发布时间】:2020-07-17 01:04:42
【问题描述】:

我有两个由 lm 生成的拟合列表,我想按元素组合它们。

现在,我有类似的东西:fits1 = list(fit1, fit2, fit3)(其中 fit1、fit2 和 fit3 是 lm 生成的模型)和 fit2 = list(fit4, fit5, fit6)。

我想做的是生成一个按元素组合的列表:list(list(fit1, fit4), list(fit2, fit5), 列表(fit3,fit6))。

我发现了一些关于如何按元素组合列表的内容,但我看到的所有解决方案都需要切换到数据帧,并且您不能在数据帧中包含类 lm 的元素。

谢谢!

【问题讨论】:

    标签: r lm


    【解决方案1】:

    我认为Map 会给你你想要的。

    fits1 <- list("fit1", "fit2", "fit3")
    fits2 <- list("fit4", "fit5", "fit6")
    
    Map(list, fits1, fits2)
    

    结果:

    [[1]]
    [[1]][[1]]
    [1] "fit1"
    
    [[1]][[2]]
    [1] "fit4"
    
    
    [[2]]
    [[2]][[1]]
    [1] "fit2"
    
    [[2]][[2]]
    [1] "fit5"
    
    
    [[3]]
    [[3]][[1]]
    [1] "fit3"
    
    [[3]][[2]]
    [1] "fit6"
    

    tidyverse 发言中,将使用purrr

    library(purrr)
    
    map2(fits1, fits2, list)
    

    【讨论】:

    • 这完美!非常感谢,我不知道有这个功能。
    【解决方案2】:

    另一个base 解决方案

    asplit(rbind(list1, list2), MARGIN = 2)
    

    相当于

    asplit(cbind(list1, list2), MARGIN = 1)
    

    测试

    fits1 <- list("fit1", "fit2", "fit3")
    fits2 <- list("fit4", "fit5", "fit6")
    asplit(rbind(fits1, fits2), 2)
    
    [[1]]
    [[1]]$fits1
    [1] "fit1"
    
    [[1]]$fits2
    [1] "fit4"
    
    
    [[2]]
    [[2]]$fits1
    [1] "fit2"
    
    [[2]]$fits2
    [1] "fit5"
    
    
    [[3]]
    [[3]]$fits1
    [1] "fit3"
    
    [[3]]$fits2
    [1] "fit6"
    

    【讨论】:

      猜你喜欢
      • 2020-07-19
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2023-04-05
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多