考虑一个具有r
行和c
列并且包含0 到;v
之间的整数的矩阵。v-1
在以下示例中r=4
,c=2
、 和v=6
。
L <- c(0,1,1,2,0,1,2,3)
(x <- matrix(L,nrow=4,ncol=2,byrow = TRUE))
## 0 1
## 1 2
## 0 1
## 2 3
目标是按列关联矩阵生成r*c
(行)v
,如下所示:
- 每行对应于原始矩阵的一个元素(按列优先顺序,即在此处的示例中,第 4 行对应于
x[4,1]
,第 5 行对应于x[1,2]
) - 找到每个元素上方和下方的“邻居”,从矩阵的顶部到底部(循环地)环绕;计算 的每个值的相邻元素的数量
v
。
例如x[1,1]
,矩阵1
(. 该行的其余部分设置为零:2
0:(v-1)
rownames 0 1 2 3 4 5
[1] 0 1 1 0 0 0
下一个元素 ( x[2,1]
)0
在两侧(上方和下方)都有,因此第一列(对应于 0)设置为 2,其余元素为零。
[2] 2 0 0 0 0 0
上面示例的完整矩阵是:
rownames 0 1 2 3 4 5
[1] 0 1 1 0 0 0
[2] 2 0 0 0 0 0
[3] 0 1 1 0 0 0
[4] 2 0 0 0 0 0
[5] 0 0 1 1 0 0
[6] 0 2 0 0 0 0
[7] 0 0 1 1 0 0
[8] 0 2 0 0 0 0
行总和均为 2。