如何根据列名和行名对矩阵的值求和?

问题描述 投票:0回答:1

我有以下矩阵:

     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?

r matrix dplyr
1个回答
0
投票

您可以用原始行名和列名填充两个相同维度的矩阵,然后比较两者:

# create dummy data
m <- matrix(c(1, 31, 7, 0, 1, 3590), ncol = 2)
colnames(m) <- c("Aa", "AA")
rownames(m) <- c("aa", "Aa", "AA")

# compare rownames with colnames as matrices
mr <- rep(rownames(m), times = ncol(m)) |> matrix(ncol = ncol(m))
mc <- rep(colnames(m), times = nrow(m)) |> matrix(nrow = nrow(m), byrow = TRUE)

# sum
sum(m[mr != mc])
#> [1] 9

创建于 2024-01-06,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.