我有以下矩阵:

     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

R相关问答推荐

跨列应用多个摘要函数:summerise_all:列表对象无法强制为double类型'

过滤矩阵以获得R中的唯一组合

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

gt()从gt为相同内容的单元格 colored颜色 不同?

修改用R编写的用户定义函数

用相同方法得到不同函数的ROC最优截断值

错误:非常长的R行中出现意外符号

在另存为PNG之前隐藏htmlwidget绘图元素

使用外部文件分配变量名及其值

为什么我的基准测试会随着样本量的增加而出现一些波动?

R中的时间序列(Ts)函数计数不正确

如何删除最后一个可操作对象

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

有没有一种方法可以同时对rhandsontable进行排序和从rhandsontable中删除?

Geom_arcbar()中出错:找不到函数";geom_arcbar";

为什么我对圆周率图的蒙特卡罗估计是空的?

如果条件匹配,则使用Mariate粘贴列名

基于R中的引用将向量值替换为数据框列的值

通过比较来自多个数据框的值和R中的条件来添加新列