Я пытаюсь получить сумму столбцов в матрице в R для определенной строки. Однако я не хочу, чтобы суммировалась вся строка, а только указанное количество столбцов, то есть в этом случае весь столбец выше диагонали. Я пробовал функции sum и rowSums, но они либо дают странные результаты, либо выдают сообщение об ошибке. Чтобы проиллюстрировать это, см. Пример кода для матрицы 8x8 ниже. Для первой строки мне нужна сумма строки, кроме элемента [1,1], для второй строки - сумма, кроме элементов [2,1] и [2,2] и т. Д.
m1 <- matrix(c(0.2834803,0.6398198,0.0766999,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,
0.0000000,0.1101746,0.6354086,0.2544168,0.0000000,0.0000000,0.0000000,0.0000000,
0.0000000,0.0000000,0.0548145,0.9451855,0.0000000,0.0000000,0.0000000,0.0000000,
0.0000000,0.0000000,0.0000000,0.3614786,0.6385214,0.0000000,0.0000000,0.0000000,
0.0000000,0.0000000,0.0000000,0.0000000,0.5594658,0.4405342,0.0000000,0.0000000,
0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.7490395,0.2509605,0.0000000,
0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.5834363,0.4165637,
0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,0.0000000,1.0000000),
8, 8, byrow = TRUE,
dimnames = list(c("iAAA", "iAA", "iA", "iBBB", "iBB", "iB", "iCCC", "iD"),
c("iAAA_p", "iAA_p", "iA_p", "iBBB_p", "iBB_p", "iB_p", "iCCC_p", "iD_p")))
Я пробовал следующее:
rowSums(m1[1, 2:8]) --> Error in rowSums(m1[1, 2:8]) :
'x' must be an array of at least two dimensions
Альтернативно:
sum(m1[1,2]:m1[1,8]) --> wrong result of 0.6398198 (which is item [1,2])
Насколько я понимаю, rowSums нужен массив, а не вектор (хотя не уверен, почему). Но я не понимаю, почему второй способ использования суммы не работает. В идеале есть способ суммировать только все столбцы в строке, которые лежат выше диагонали.
Большое спасибо!