基于另一个向量中的索引组合列表中的元素

Tho*_*P85 3 indexing r list

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

a <- list(1, c(3, 7), 5)
b <- c(1,1,2)
Run Code Online (Sandbox Code Playgroud)

如何创建一个长度为max(b)的新列表,其中a中的每个元素都根据b放入相应的索引中,如果出现多次,则组合起来,这样就得到:

[[1]]
[1] 1 3 7

[[2]]
[1] 5
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢您的帮助

joh*_*nes 5

关于什么:

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

$`2`
[1] 5
Run Code Online (Sandbox Code Playgroud)