如何将矢量转换为R中的列表?

时间:2015-01-09 20:19:37

标签: r list vector

我有一个长度为偶数的向量。

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

我想将其转换为这样的列表,其中每2个连续数字被放入子组件中。

[[1]]
[1] 1 3

[[2]]
[1] 2 4

[[3]]
[1] 5 6

必须有一个简单的方法来做到这一点。如果它更容易,也可以从矩阵转换为这样的列表。

3 个答案:

答案 0 :(得分:5)

您可以使用split()

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

或者如果你想先去矩阵,那么

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

答案 1 :(得分: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

答案 2 :(得分: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))))