3

给定一个列表 (a) 和一个与 a 长度相同的数值向量 (b):

a <- list(1, c(3, 7), 5)
b <- c(1,1,2)

如何创建一个长度为 max(b) 的新列表,其中 a 中的每个元素都根据 b 放入相应的索引中,并在出现多次时合并,以便您获得:

[[1]]
[1] 1 3 7

[[2]]
[1] 5

希望这应该非常有效地完成(没有循环),因为我的数据维度往往非常大......

我很确定有一个我没有想过的明显解决方案......

谢谢您的帮助

4

2 回答 2

5

关于什么:

split(unlist(a), rep(b, sapply(a, length)))
$`1`
[1] 1 3 7

$`2`
[1] 5
于 2012-07-06T07:04:17.090 回答
3

这是另一种方式

> lapply(split(a, b), unlist)
$`1`
[1] 1 3 7

$`2`
[1] 5
于 2012-07-06T08:51:04.947 回答