给定一个列表(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)
希望这可以非常有效地完成(没有循环),因为我的数据的维度往往非常大......
我很确定有一个明显的解决方案我没想过......
谢谢您的帮助
关于什么:
split(unlist(a), rep(b, sapply(a, length)))
$`1`
[1] 1 3 7
$`2`
[1] 5
Run Code Online (Sandbox Code Playgroud)