假设我有一个向量:
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
来做到这一点,因为有时我需要将向量拆分为10
,3
或任意数量的子向量取决于我的数据。
答案 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