如何按元素组合两个 lm 模型列表?
How can I combine two lists of lm models element-wise?
我有两个由 lm 生成的拟合列表,我想按元素组合它们。
现在,我有类似的东西:fits1 = list(fit1, fit2, fit3)(其中 fit1、fit2 和 fit3 是由 lm 生成的模型)和 fits2 = list(fit4, fit5, fit6)。
我想做的是生成一个按元素组合的列表:list(list(fit1, fit4), list(fit2, fit5),
列表(fit3,fit6))。
我发现了一些关于如何按元素组合列表的内容,但我看到的所有解决方案都需要切换到数据框,并且你不能在数据框中包含 class lm 的元素。
谢谢!
我想 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)
另一个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"
我有两个由 lm 生成的拟合列表,我想按元素组合它们。
现在,我有类似的东西:fits1 = list(fit1, fit2, fit3)(其中 fit1、fit2 和 fit3 是由 lm 生成的模型)和 fits2 = list(fit4, fit5, fit6)。
我想做的是生成一个按元素组合的列表:list(list(fit1, fit4), list(fit2, fit5), 列表(fit3,fit6))。
我发现了一些关于如何按元素组合列表的内容,但我看到的所有解决方案都需要切换到数据框,并且你不能在数据框中包含 class lm 的元素。
谢谢!
我想 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)
另一个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"