根据R中对角线的值删除矩阵中的行和列

Jud*_*udy 1 r matrix

使用R:如果我有一个方阵,如果对角线上的值小于5,那么删除行和列的最简单(以及快速)方法是什么?例如

       x1  x2  x3  x4
    x1 13  15  12  25
    x2 23  4   23  34
    x3 21  11  1   11
    x4 11  22  23  33
Run Code Online (Sandbox Code Playgroud)

代码将删除第2行和第2列,以及第3行和第3列.我尝试执行(i in 1:nrow(Mx)),但删除行会更改总行数.

最终的矩阵看起来像

       x1  x4
    x1 13  25
    x4 11  33
Run Code Online (Sandbox Code Playgroud)

Sim*_*lon 5

使用diag函数和逻辑比较<[像这样的子集运算符...

idx <- ! diag(m) < 5
m <- m[ idx , idx ]
Run Code Online (Sandbox Code Playgroud)

例如

m
#   x1 x2 x3 x4
#x1 13 15 12 25
#x2 23  4 23 34
#x3 21 11  1 11
#x4 11 22 23 33

idx <- ! diag(m) < 5    
m <- m[ idx , idx ]

m
#   x1 x4
#x1 13 25
#x4 11 33
Run Code Online (Sandbox Code Playgroud)

  • @Roland哎呀.更新.(虽然我可能不应该做两次比较! (2认同)