Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在列表中组合特定对象_R_List - Fatal编程技术网

R 在列表中组合特定对象

R 在列表中组合特定对象,r,list,R,List,“a”是一个列表 > 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 我只能使用“cumsum”来对这三个组求和,但不知道如何显示上面列出的每个对象。谢谢。另一个选择是 tapply(a, rep(seq_along(b), b), Reduce, f = `c`) $`1` [1] 1 2 3 $`2`

“a”是一个列表

> 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
我只能使用“cumsum”来对这三个组求和,但不知道如何显示上面列出的每个对象。谢谢。

另一个选择是

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

$`2`
[1] 4 5 6

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

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

#$`3`
#[1] 7
另一次尝试:

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

grps
Julius@lightsnail这一定是由于
Julius()
输出中的某些属性造成的。尝试
all.equal(akrun(),Julius(),check.attributes=FALSE)#[1]TRUE
非常感谢!我发现
cumsum(sequence(b)==1))
rep(seq_-along(b),b)
是一样的,非逻辑语句比逻辑语句快一点,所以基于@Julius和你的代码,
lappy(split(a,rep(seq_-along(b),b),unlist)
可以达到最快的速度。谢谢!
lapply(split(a, cumsum(sequence(b)==1)), unlist)
#$`1`
#[1] 1 2 3

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

#$`3`
#[1] 7
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