Предположим, у меня есть матрица A
размеров n x m
. Начальная ячейка (i,j)
, и константа k
, которая удовлетворяет k < n x m
.
Мне нужен способ извлечь значения внутри A
, чтобы все значения находились в пределах k
шагов от начального клетка. шаг - это перемещение столбца или строки. Затем я собираюсь суммировать извлеченные значения по 2 группам, где 1 группа состоит из сумм, полученных из того же столбца в исходной матрице, а другая группа представляет собой сумму, полученную в результате суммирования значений по строкам исходной матрицы.
Для меня важно, чтобы это касалось ситуаций, когда начальная ячейка находится в пределах k
шагов от края матрицы. Пример набора (я здесь сильно упрощаю):
> #create matrix where m = 7,n = 7
> Mat <- sample(1:49,49) %>% matrix(7,7)
>
> #declare starting cell where (i = 4, j = 2)
> i = 4
> j = 2
>
> #declare number of steps
> k = 2
>
> Mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 25 35 29 10 16 46 23
[2,] 32 43 7 5 31 1 14
[3,] 36 19 49 45 13 41 47
[4,] 17 18 48 9 3 28 12
[5,] 26 6 30 33 20 2 11
[6,] 40 24 39 21 37 38 8
[7,] 4 15 34 22 27 44 42
> Mat[i,j]
[1] 18
для этого примера выходными данными будут два вектора (один для сумм столбцов и один для сумм строк):
> Columnsum <- c(sum(36,17,26) , #sum(Mat[3:5,1])
+ sum(43,19,18,6,24), #sum(Mat[2:6,2])
+ sum(49,48,30), #sum(Mat[3:5,3])
+ sum(9)) #sum(Mat[4:4,3])
>
> Rowsum <- c(sum(43), #sum(Mat[2,2:2])
+ sum(36,19,49), #sum(Mat[3,1:3])
+ sum(17,18,48,9), #sum(Mat[4,1:4])
+ sum(26,6,30), #sum(Mat[5,1:3])
+ sum(24)) #sum(Mat[6,2:2])
>
> Columnsum
[1] 79 110 127 9
> Rowsum
[1] 43 104 92 62 24