我想编写一个函数,其输入是一个方形矩阵,它返回一个方形矩阵,从右上角到左下角的数字被保留,其他数字为零.
例如,假设A是下面的4*4矩阵.(抱歉,我不知道如何输入矩阵表达式)
[1,2,3,4]
[5,6,7,8]
[9,10,11,12]
[13,14,15,16]
Run Code Online (Sandbox Code Playgroud)
如何在没有任何循环的情况下在R中编写函数将矩阵转换为此?
[0,0,0,4]
[0,0,7,0]
[0,10,0,0]
[13,0,0,0]
Run Code Online (Sandbox Code Playgroud)
这感觉就像是一次体操运动......
xy <- matrix(1:16, ncol = 4, byrow = TRUE)
xy <- apply(xy, MARGIN = 1, rev)
xy[lower.tri(xy)] <- 0
xy[upper.tri(xy)] <- 0
t(apply(xy, MARGIN = 1, rev))
[,1] [,2] [,3] [,4]
[1,] 0 0 0 4
[2,] 0 0 7 0
[3,] 0 10 0 0
[4,] 13 0 0 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |