我有以下矩阵:
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?
您可以用原始行名和列名填充两个相同维度的矩阵,然后比较两者:
# 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