我希望R
在以下条件下将任何向量拆分为一系列子向量:
-
每个子向量必须具有相等长度的
l
-
没有两(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
我在想一种方法,我可以写一个条件语句,使得如果test
是FALSE
,则丢弃最后一个子向量,而如果test
是TRUE
,则包括最后一个子矢量。
您可以为条件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