Работа над проектом, в котором нам нужно взять среднее число чисел в матрице с теми, кто вокруг него. Например, представьте матрицу 3x3, такую как
[(1,2,3),
(4,5,6),
(7,8,9)].
Шаг 1 - добавить отступы вокруг матрицы. Допустим, мы добавили 1 слой отступа, получив матрицу 5x5
[[0,0,0,0,0],
[0,1,2,3,0],
[0,4,5,6,0],
[0,7,8,9,0],
[0,0,0,0,0]].
matrix(c(0,0,0,0,0,0,1,2,3,0,0,4,5,6,0,0,7,8,9,0,0,0,0,0,0), nrow=5, ncol=5, byrow=T)
Затем мы усредняем и фильтруем, получая итоговую матрицу 3x3
. Первый ряд / первый столбец этой матрицы должен быть (1+2+4+5)/9 = 1.33
.
Прямо сейчас мой код работает и выглядит как
for(row in (k+1):(nrow(pad.m) - k)){
for(col in (k+1):(ncol(pad.m) - k)) {
y <- pad.m[seq(row-k, row+k), seq(col-k, col+k)]
filter.m[row-k, col-k]<- mean(y)
}
где k - количество слоев заполнения, а pad.m - наша матрица. К сожалению, мой профессор говорит, что это слишком громоздко и предпочитает более 2 петель. Мне было интересно, как я могу подмножество и перебрать матрицу с sapply.