如果我有一个列表:
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
找不到相应的内容。
答案 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