将向量分割为相同长度的subverter,并将每个向量分配给一个新向量

时间:2018-06-29 14:54:48

标签: r

假设我有一个向量:

s <- c(1:30) ## here the numbers are just an example. I just need to split it into the same length subvectors. 

然后,假设我还有其他三个向量:

s1 <- s2 <- s3 <- vector()

我想将第一个向量s分为三个子向量,每个子向量包含10个元素。然后,我想将每个10元素保存在向量s1:s3中。例如,

我想要这个:

  > s1
 [1]  1  2  3  4  5  6  7  8  9 10

> s2
 [1] 11 12 13 14 15 16 17 18 19 20

> s3
 [1] 21 22 23 24 25 26 27 28 29 30

我想用lapply来做到这一点,因为有时我需要将向量拆分为103或任意数量的子向量取决于我的数据。

1 个答案:

答案 0 :(得分:2)

我们可以使用split创建的分组索引来vector gl的'。输出将为list,最好将其保存在list中,而不要在全局环境中保留多个对象

lst <- split(s, as.integer(gl(length(s), 10, length(s))))

gl创建分组向量

as.integer(gl(length(s), 10, length(s)))
#[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3

,然后用gl的输出拆分s时,将s的前10个值分组在一起,然后是第二个10值,依此类推。这些存储为list中的vector