2015-01-09 102 views
1

我有一個長度爲偶數的矢量。如何將矢量轉換爲R中的列表?

vec = c(1,3,2,4,5,6) 

我想將其轉換成這樣的列表,其中每2個連續號碼放入子組件。

[[1]] 
[1] 1 3 

[[2]] 
[1] 2 4 

[[3]] 
[1] 5 6 

必須有一個簡單的方法來做到這一點。如果這樣做更容易,也可以將矩陣轉換爲這樣的列表。

回答

4

你可以使用split()

split(vec, (seq_along(vec)-1) %/% 2) 

或者,如果你想去一個矩陣,再

library(magrittr) # for %>% 
matrix(vec, nrow=2) %>% split(., col(.)) 
+0

這是真棒!謝謝! – wen 2015-01-09 20:42:27

2

分裂會做:

> vec = c(1,3,2,4,5,6) 
> split.size <- 2 
> split(vec, rep(seq(len=length(vec)/split.size), each=split.size)) 
$`1` 
[1] 1 3 

$`2` 
[1] 2 4 

$`3` 
[1] 5 6 
1

使用lapply:

lapply(1:(length(vec)/2),FUN=function(x)c(vec[(x*2)-1],vec[x*2])) 

或者通過中間矩陣(和data.frame ...):

unname(as.list(as.data.frame(matrix(vec,nrow=2))))