Добавить к уровню внутреннего списка вложенного списка - PullRequest
0 голосов
/ 01 марта 2019

Хорошо, поэтому мне нужно программно объединить два вложенных списка определенным образом.Трудно объяснить, так проще всего подарить игрушечную модель.Предположим, у меня есть два вложенных списка следующим образом:

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

Учитывая два приведенных выше вложенных списка, как мне написать код (base 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

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете использовать 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
...