如何将向量转换为 R 中的列表?
How to convert a vector into a list in R?
我有一个长度为偶数的向量。
vec = c(1,3,2,4,5,6)
我想把它转换成这样的列表,每2个连续的数字放入一个子组件。
[[1]]
[1] 1 3
[[2]]
[1] 2 4
[[3]]
[1] 5 6
一定有一种简单的方法可以做到这一点。从矩阵转换成这样的列表也是可以的,如果这样做更容易的话。
拆分即可:
> 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
你可以使用 split()
split(vec, (seq_along(vec)-1) %/% 2)
或者如果你想先去矩阵,然后
library(magrittr) # for %>%
matrix(vec, nrow=2) %>% split(., col(.))
使用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))))
我有一个长度为偶数的向量。
vec = c(1,3,2,4,5,6)
我想把它转换成这样的列表,每2个连续的数字放入一个子组件。
[[1]]
[1] 1 3
[[2]]
[1] 2 4
[[3]]
[1] 5 6
一定有一种简单的方法可以做到这一点。从矩阵转换成这样的列表也是可以的,如果这样做更容易的话。
拆分即可:
> 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
你可以使用 split()
split(vec, (seq_along(vec)-1) %/% 2)
或者如果你想先去矩阵,然后
library(magrittr) # for %>%
matrix(vec, nrow=2) %>% split(., col(.))
使用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))))