R:将向量拆分为相等重叠的子向量

R:将向量拆分为相等重叠的子向量,r,vector,split,R,Vector,Split,我想要R脚本将父向量(1到n)拆分为重叠的子向量,且长度相等且恒定。在这种情况下,由于父向量耗尽,最后一个子向量的长度不等于设定长度,需要返回到父向量的开头,以使用尽可能多的子向量来弥补其设定的恒定长度。然后分裂就会停止 我有一个R代码,它给出了每个块的开始和结束,如下所示: blocks <- function(len, ov, n) { starts <- unique(sort(c(seq(1, n, len), seq(len-ov+1, n, len)))) en

我想要
R
脚本将父
向量
(1到n)拆分为
重叠的子向量
,且
长度相等且恒定
。在这种情况下,由于父向量耗尽,最后一个子向量的长度不等于设定长度,需要返回到父向量的开头,以使用尽可能多的子向量来弥补其设定的恒定长度。然后分裂就会停止

我有一个
R
代码,它给出了每个块的开始和结束,如下所示:

blocks <- function(len, ov, n) {

  starts <- unique(sort(c(seq(1, n, len), seq(len-ov+1, n, len))))
  ends <- pmin(starts + len - 1, n)

  # truncate starts and ends to the first num elements
  num <- match(n, ends)
  head(data.frame(starts, ends), num)
}

vec = 1:17
len = 8
ov = ceiling(len/2)
b <- blocks(len, ov, length(vec))
b
我想要什么

我想知道如何获得
r
,让最后一个子向量使用尽可能多的父向量的第一个元素来弥补其设置的长度,如果最后一个子向量足够长,则无需采取进一步的措施

#[[1]]
#[1] 1 2 3 4 5 6 7 8

#[[2]]
#[1]  5  6  7  8  9 10 11 12

#[[3]]
#[1]  9 10 11 12 13 14 15 16

#[[4]]
#[1] 13 14 15 16 17  1  2  3 

这些都有点乱,不使用端点位置,我不确定这是否重要:1)模运算符
Map(函数(i){x)每个都工作。不管你是否使用端点位置。这些都有点乱,不使用端点位置,我不确定这是否重要:1)模运算符
Map(函数(i){x它们中的每一个都起作用。不管你使用还是不使用端点位置。
#[[1]]
#[1] 1 2 3 4 5 6 7 8

#[[2]]
#[1]  5  6  7  8  9 10 11 12

#[[3]]
#[1]  9 10 11 12 13 14 15 16

#[[4]]
#[1] 13 14 15 16 17  1  2  3