【发布时间】:2017-07-24 15:56:50
【问题描述】:
说出下面的矩阵
mat = round(matrix(runif(100), ncol = 5))
mat
[,1] [,2] [,3] [,4] [,5]
[1,] 0 1 0 1 0
[2,] 0 0 1 1 1
[3,] 1 1 1 1 1
[4,] 1 0 1 0 1
[5,] 1 0 0 1 1
[6,] 1 0 0 1 1
[7,] 1 0 1 1 1
[8,] 1 1 1 0 1
[9,] 0 0 0 1 0
[10,] 0 0 0 1 1
[11,] 0 0 0 0 0
[12,] 1 1 0 0 1
[13,] 1 1 0 1 0
[14,] 1 0 1 0 1
[15,] 0 1 1 0 0
[16,] 1 1 0 1 1
[17,] 1 1 1 0 1
[18,] 1 1 1 1 1
[19,] 0 1 0 0 1
[20,] 1 1 0 0 0
我想生成一个新矩阵,它是原始矩阵每个单元格周围 3x3 方形子集中的“1”数。 例如
mat_sum
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 4 4 3
[2,] 3 5 6 7 5
[3,] 3 6 6 8 5
etc.
我尝试了以下循环,但它没有给出我需要的东西
for(x in 1:(nrow(mat)-3)){
for (y in 1:(ncol(mat)-3)){
mat2[x,y] = sum(mat[c(x:x+2), c(y:y+2)] == 1))
}}
我需要能够将子集扩展到我的数据上的 10x10 框(> 1000x1000 单元格)。任何提示表示赞赏!谢谢
【问题讨论】: