假设我有两个列表,每个列表包含多个子元素:
l1 <- list(c(1933:1935),c(1950:1954), c(2012:2013)) #groups of years
l2 <- list(c(19:21),c(19:24),c(22:26)) #groups of plot numbers
我想创建一个新列表(我们称之为“l3
”)的子列表,其中:
我的新列表(l3
)的每个元素都对应l1
的每个元素
l1
有3个元素(每个元素包含可变数年),所以我希望l3
也有3个主要元素。在l3
的给定元素中,我希望每年在l1
的相应元素中列出中的所有l2
元素 l2
结果如下:
> l3
[[1]]
[[1]]
[1] 19 20 21
[[1]]
[[2]]
[1] 19 20 21
[[1]]
[[3]]
[1] 19 20 21
[[2]]
[[1]]
[1] 19 20 21 22 23 24
[[2]]
[[2]]
[1] 19 20 21 22 23 24
[[2]]
[[3]]
[1] 19 20 21 22 23 24
[[2]]
[[4]]
[1] 19 20 21 22 23 24
[[3]]
[[1]]
[1] 22 23 24 25 26
[[3]]
[[2]]
[1] 22 23 24 25 26
答案 0 :(得分:1)
您可以在地图函数中使用Map
lapply
为l1
的每个子列表返回每年的number
向量:
Map(function(years, numbers) lapply(years, function(x) numbers), l1, l2)
[[1]]
[[1]][[1]]
[1] 19 20 21
[[1]][[2]]
[1] 19 20 21
[[1]][[3]]
[1] 19 20 21
[[2]]
[[2]][[1]]
[1] 19 20 21 22 23 24
[[2]][[2]]
[1] 19 20 21 22 23 24
[[2]][[3]]
[1] 19 20 21 22 23 24
[[2]][[4]]
[1] 19 20 21 22 23 24
[[2]][[5]]
[1] 19 20 21 22 23 24
[[3]]
[[3]][[1]]
[1] 22 23 24 25 26
[[3]][[2]]
[1] 22 23 24 25 26
或其他选项,请使用rep
:
Map(function(n, v) rep(list(v), n), lengths(l1), l2)