如何将两个lm模型列表逐个元素组合?

时间:2020-07-16 16:44:58

标签: r lm

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

我认为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)

答案 1 :(得分: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"
相关问题