如何在R中将向量转换为列表?

4

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

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

我希望将其转换为如下的列表,其中每2个连续数字放入一个子组件。
[[1]]
[1] 1 3

[[2]]
[1] 2 4

[[3]]
[1] 5 6

一定有一种简单的方法来做这件事。如果这样更容易,也可以将矩阵转化为此类列表。

3个回答

5
你可以使用 split() 方法。
split(vec, (seq_along(vec)-1) %/% 2)

如果您想先进入矩阵,请执行以下操作:
library(magrittr)   # for %>%
matrix(vec, nrow=2) %>% split(., col(.))

这太棒了!谢谢! - wen

2

split将会执行以下操作:

> 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

使用lapply:

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

通过中间矩阵(和数据框架...)传递:
unname(as.list(as.data.frame(matrix(vec,nrow=2))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接