将矢量列表划分为后续矢量对

时间:2015-06-23 08:57:22

标签: r

如果我有一个列表:

ll <- list(c(1,2),c(2,3),c(3,4),c(4,5))

如何将其拆分为:

list(list(c(1,2),c(2,3)),list(c(2,3),c(3,4)),list(c(3,4),c(4,5)))

Mathematica中,我有Partition函数,我可以这样做:

Partition[ll, 2]

但我在R找不到相应的内容。

2 个答案:

答案 0 :(得分:3)

您可以尝试Map

r2 <- Map(list, ll[-length(ll)], ll[-1])
r1 <- list(list(c(1,2),c(2,3)),list(c(2,3),c(3,4)),list(c(3,4),c(4,5)))
identical(r1, r2)
#[1] TRUE

答案 1 :(得分:3)

另一种选择,使用lapply

lapply(seq(ll[-1]), function(x) list(ll[-length(ll)][[x]], ll[-1][[x]]))

它也提供相同的输出:

identical(lapply(seq(ll[-1]), function(x) list(ll[-length(ll)][[x]], ll[-1][[x]])),
          list(list(c(1,2),c(2,3)),list(c(2,3),c(3,4)),list(c(3,4),c(4,5))))
#[1] TRUE