我有两份名单如下:
list1 <- list(c(`0` = 0L, `25` = 0L, `100` = 1L, `250` = 1L, `500` = 1L,
`1000` = 1L, Infinity = 3L), c(`0` = 0L, `25` = 0L, `100` = 1L,
`250` = 1L, `500` = 1L, Infinity = 4L))
list2 <- list(c(`0` = 0L, `25` = 0L, `100` = 0L, `250` = 2L, `500` = 1L,
`1000` = 1L, Infinity = 3L), c(`0` = 0L, `25` = 0L, `100` = 1L,
`250` = 1L, `500` = 1L, Infinity = 4L))我想把list2[[1]]附加到list1[[1]],把list2[[2]]附加到list1[[2]]。因此:
list_out <- list(c(`0` = 0L, `25` = 0L, `100` = 1L, `250` = 1L, `500` = 1L,
`1000` = 1L, Infinity = 3L, `0` = 0L, `25` = 0L, `100` = 0L, `250` = 2L, `500` = 1L,
`1000` = 1L, Infinity = 3L), c(`0` = 0L, `25` = 0L, `100` = 1L,
`250` = 1L, `500` = 1L, Infinity = 4L, `0` = 0L, `25` = 0L, `100` = 1L,
`250` = 1L, `500` = 1L, Infinity = 4L))有人能帮我解释一下我该怎么做吗?
发布于 2022-05-08 09:21:48
您可以使用lapply和c()。
lapply(1:length(list1), function(x) c(list1[[x]], list2[[x]]))或mapply与append或c
mapply(append, list1, list2)输出
[[1]]
0 25 100 250 500 1000 Infinity 0
0 0 1 1 1 1 3 0
25 100 250 500 1000 Infinity
0 0 2 1 1 3
[[2]]
0 25 100 250 500 Infinity 0 25
0 0 1 1 1 4 0 0
100 250 500 Infinity
1 1 1 4 检查它是否与您的list_out相同
identical(lapply(1:length(list1), function(x) c(list1[[x]], list2[[x]])), list_out)
[1] TRUE
identical(mapply(append, list1, list2), list_out)
[1] TRUE发布于 2022-05-08 10:21:17
这是另一个R基解。
Map(c, list1, list2)
identical(Map(c, list1, list2), list_out)
#[1] TRUE发布于 2022-05-08 14:05:14
另一个选择是map2
library(purrr)
map2(list1, list2, c)https://stackoverflow.com/questions/72159588
复制相似问题