2015-06-23 3 views
2

Если у меня есть список, как:Разметка Список векторов на пары последующих векторов

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.

ответ

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 
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