在R中把一个向量拆分成长度相等的不重叠子向量



我希望R在以下条件下将任何向量拆分为一系列子向量:

  1. 每个子向量必须具有相等长度的l

  2. 没有两(2(个子矢量必须与重叠

我试过这个:

当父向量vec可被子向量长度l整除时

vec <- 1:11 # parent vector.
l <- 2 # number of elements that each sub-vector must contain.
blk <- split(vec, ceiling(seq_along(vec) / l))
test <- length(vec) %% l == 0

$1[1] 12

$2[1] 3 4

$3[1] 5 6

$4[1] 7 8

$5[1] 9 10

$6[1] 11

当父向量vec不能被子向量长度l整除时

vec <- 1:11 # parent vector.
l <- 3 # number of elements that each sub-vector must contain.
blk <- split(vec, ceiling(seq_along(vec) / l))
test <- length(vec) %% l == 0

$1[1] 1 2 3

$2[1] 4 5 6

$3[1] 7 8 9

$4[1] 10 11

我想要什么

如果最后一个子向量未达到设定的长度,则丢弃,否则包括。

编辑

test <- length(x) %% l == 0

我在想一种方法,我可以写一个条件语句,使得如果testFALSE,则丢弃最后一个子向量,而如果testTRUE,则包括最后一个子矢量。

您可以为条件lengths(blk) == l的结果子集。

vec <- 1:11 # parent vector.
l <- 3 # number of elements that each sub-vector must contain.
blk <- split(vec, ceiling(seq_along(vec) / l))
blk[lengths(blk) == l]
#if(length(blk[length(blk)]) != l) blk[length(blk)] <- NULL #Alternative
#$`1`
#[1] 1 2 3
#
#$`2`
#[1] 4 5 6
#
#$`3`
#[1] 7 8 9

最新更新