附加到嵌套列表的内部列表级别

问题描述 投票:0回答:1

好的,我需要以特定方式以编程方式组合两个嵌套列表。很难解释这么简单的事情是给玩具模型。假设我有两个嵌套列表,如下所示:

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
r list nested append
1个回答
2
投票

你可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.