组合列表中的特定对象

时间:2016-05-06 02:04:30

标签: r list

""是一个清单。

> a<-list(1,2,3,c(4,5),6,7)
> a
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] 4 5

[[5]]
[1] 6

[[6]]
[1] 7

&#34; B&#34;是一个变换指标。

b<-c(3,2,1)

我想要&#34; a&#34;中的组(或组合)对象。根据&#34; b&#34;中的数字,表示前3个对象组在一起,然后是接下来的两个,最后是最后一个,预期结果如下:

[[1]]
[1] 1 2 3

[[2]]
[1] 4 5 6

[[3]]
[1] 7

我只能使用&#34; cumsum&#34;总结三组,但不知道如何显示如上所列的每个对象。感谢。

3 个答案:

答案 0 :(得分:4)

tapply(a, rep(seq_along(b), b), Reduce, f = `c`)
$`1`
[1] 1 2 3

$`2`
[1] 4 5 6

$`3`
[1] 7

答案 1 :(得分:2)

另一种选择是

lapply(split(a, cumsum(sequence(b)==1)), unlist)
#$`1`
#[1] 1 2 3

#$`2`
#[1] 4 5 6

#$`3`
#[1] 7

答案 2 :(得分:1)

另一次尝试:

grps <- rep(rep(seq_along(b), b), lengths(a))
relist(unlist(a), split(grps,grps) )

#$`1`
#[1] 1 2 3
#
#$`2`
#[1] 4 5 6
#
#$`3`
#[1] 7