我有以下矩阵:
Aa AA
aa 1 0
Aa 31 1
AA 7 3590
如何在R中表示我想要对矩阵中列名和行名不对应的值求和,在本例中: 1(AA对AA),7(AA对AA),0(AA对AA),1(AA对AA),得到9?
我有以下矩阵:
Aa AA
aa 1 0
Aa 31 1
AA 7 3590
如何在R中表示我想要对矩阵中列名和行名不对应的值求和,在本例中: 1(AA对AA),7(AA对AA),0(AA对AA),1(AA对AA),得到9?
您可以使用outer
来比较行名和列名,留下一个与原始维度相同的逻辑矩阵.这可用于对原始矩阵进行子集,然后对其求和.这意味着下面的一句话应该能起到作用:
sum(m[!outer(rownames(m), colnames(m), `==`)])
#> [1] 9
Data used:
m <- structure(c(1, 31, 7, 0, 1, 3590), dim = 3:2, dimnames = list(
c("aa", "Aa", "AA"), c("Aa", "AA")))
m
#> Aa AA
#> aa 1 0
#> Aa 31 1
#> AA 7 3590