如何用 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)
我建议创建一个稀疏逻辑矩阵:
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)