2015-01-09 53 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))))