创建非对角线/移动窗口矩阵

mon*_*nic 4 r matrix

如何用 R 创建非对角线/移动窗口矩阵?

> offdiag(3, 4, 6)

1 1 1 0 0 0
0 1 1 1 0 0
0 0 1 1 1 0
0 0 0 1 1 1 
Run Code Online (Sandbox Code Playgroud)

Rol*_*and 6

我建议创建一个稀疏逻辑矩阵:

library(Matrix)
X <- bandSparse(n = 4, m = 6, k = seq_len(3) - 1L)
X
#4 x 6 sparse Matrix of class "ngCMatrix"
#
#[1,] | | | . . .
#[2,] . | | | . .
#[3,] . . | | | .
#[4,] . . . | | |
Run Code Online (Sandbox Code Playgroud)

如果您需要一个稠密整数矩阵:

+as.matrix(X)
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    1    1    1    0    0    0
#[2,]    0    1    1    1    0    0
#[3,]    0    0    1    1    1    0
#[4,]    0    0    0    1    1    1
Run Code Online (Sandbox Code Playgroud)