由此

x <- 1:10
block.size <- 3L

我想生成一个长度为3的连续且重叠的块序列,如下所示:

1,2,3
2,3,4
3,4,5
4,5,6
5,6,7
6,7,8
7,8,9
8,9,10

我找到了this nice answer个可以和角色打交道的.

我可以想出一个循环来做这件事,但如果可能的话,我肯定会更喜欢一种更简洁和矢量化的方式.这是我的观点.

block.nums <- length(x)-len+1
blocks <- vector(mode = "list", length = block.nums)

for (i in 1:block.nums) {
  blocks[[i]] <- i:(i+block.size-1)
}

推荐答案

试一试embed()

> embed(x, block.size)[, block.size:1]
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    3    4
[3,]    3    4    5
[4,]    4    5    6
[5,]    5    6    7
[6,]    6    7    8
[7,]    7    8    9
[8,]    8    9   10

或者,sequence

matrix(
    sequence(
        rep(1 + length(x) - block.size, block.size),
        from = head(seq_along(x), block.size)
    ),
    ncol = block.size
)

这也给出了所需的输出

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

R相关问答推荐

当y大于阈值和值范围时,在时间序列中突出显示区域

rvest函数read_html_live()不允许html_elements()正确读取

基于两个现有列创建新列

如何计算新变量中的通货inflating 率?

从R中的地址提取街道名称

R通过字符串中的索引连接数据帧r

如何对数据集进行逆向工程?

terra nearest()仅为所有`to_id`列返回NA

次级y轴R gggplot2

删除列表中存储的数据帧内和数据帧之间的重复行

如何调整曲线图中的y轴标签?

条形图和在Ploly中悬停的问题

如何删除最后一个可操作对象

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

在R中创建连续的期间

数值型数据与字符混合时如何进行绑定

计算Mean by分组和绑定到R中的数据集

我需要使用ggplot2制作堆叠条形图

按镜像列值自定义行顺序

具有自定义仓位限制和计数的GGPLATE直方图