好的,我需要以特定方式以编程方式组合两个嵌套列表。很难解释这么简单的事情是给玩具模型。假设我有两个嵌套列表,如下所示:
a <- list(101:110, 201:210)
b <- list(111:120, 211:220)
d <- list(311:320, 311:320)
nestlist1 <- list(a, b)
nestlist2 <- list(d)
列表看起来像这样:
> nestlist1
[[1]]
[[1]][[1]]
[1] 101 102 103 104 105 106 107 108 109 110
[[1]][[2]]
[1] 201 202 203 204 205 206 207 208 209 210
[[2]]
[[2]][[1]]
[1] 111 112 113 114 115 116 117 118 119 120
[[2]][[2]]
[1] 211 212 213 214 215 216 217 218 219 220
> nestlist2
[[1]]
[[1]][[1]]
[1] 311 312 313 314 315 316 317 318 319 320
[[1]][[2]]
[1] 311 312 313 314 315 316 317 318 319 320
鉴于上面的两个嵌套列表,我如何编写代码(基本R或purrr)使列表看起来像这样:
> wantedlist
[[1]]
[[1]][[1]]
[1] 101 102 103 104 105 106 107 108 109 110
[[1]][[2]]
[1] 201 202 203 204 205 206 207 208 209 210
[[1]][[3]]
[1] 301 302 303 304 305 306 307 308 309 310
[[2]]
[[2]][[1]]
[1] 111 112 113 114 115 116 117 118 119 120
[[2]][[2]]
[1] 211 212 213 214 215 216 217 218 219 220
[[2]][[3]]
[1] 311 312 313 314 315 316 317 318 319 320
你可以使用Map
,然后创建一个附加列表的函数:
a <- list(101:110, 201:210)
b <- list(111:120, 211:220)
d <- list(311:320, 311:320)
nestlist1 <- list(a, b)
nestlist2 <- list(d)
wantedlist <- list()
append_list <- function(l1, l2) c(l1, list(l2))
Map(f = append_list, nestlist1, unlist(nestlist2, recursive = FALSE))
[[1]]
[[1]][[1]]
[1] 101 102 103 104 105 106 107 108 109 110
[[1]][[2]]
[1] 201 202 203 204 205 206 207 208 209 210
[[1]][[3]]
[1] 311 312 313 314 315 316 317 318 319 320
[[2]]
[[2]][[1]]
[1] 111 112 113 114 115 116 117 118 119 120
[[2]][[2]]
[1] 211 212 213 214 215 216 217 218 219 220
[[2]][[3]]
[1] 311 312 313 314 315 316 317 318 319 320