我正在尝试获取 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 需要一个数组而不是一个向量(尽管不确定为什么)。但我不明白为什么使用 sum 的第二种方法不起作用。理想情况下,有某种方法可以仅对位于对角线上方的行中的所有列求和。
多谢!