给出一个列表(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
这应该非常有效地完成(没有循环),因为我的数据的维度往往非常大......
我很确定有一个明显的解决方案我没想过......
感谢您的帮助
答案 0 :(得分:5)
怎么样:
split(unlist(a), rep(b, sapply(a, length)))
$`1`
[1] 1 3 7
$`2`
[1] 5
答案 1 :(得分:3)
这是另一种方式
> lapply(split(a, b), unlist)
$`1`
[1] 1 3 7
$`2`
[1] 5