使用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)
使用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)
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |