我有一個維度不同的矩陣串列,每個矩陣都有一個全零行或列或一個全零列和一個全零行。我相信應該有一個有效的單線將它們削減到僅非零,但我還沒有找到它。
dput(mt)
list(A = structure(c(1, 7, 9, 0, 3, 4, 1, 0, 0, 0, 0, 0), dim = 4:3),
B = structure(c(1, 0, 3, 0, 8, 0, 2, 0), dim = c(2L, 4L)),
C = structure(c(1, 3, 8, 2, 0, 0, 0, 0), dim = c(4L, 2L)))
我的預期結果看起來像這樣
$A
[,1] [,2]
[1,] 1 3
[2,] 7 4
[3,] 9 1
$B
[,1] [,2] [,3] [,4]
[1,] 1 3 8 2
$C
[,1]
[1,] 1
[2,] 3
[3,] 8
[4,] 2
uj5u.com熱心網友回復:
我們可以在邏輯矩陣上創建行/列索引,其中行全為 0 或列全為 0 rowSums/colSums,然后為行/列索引創建邏輯向量
lapply(mt, function(x)
{
m1 <- x == 0
x[!(rowSums(m1)== ncol(m1)),
!(colSums(m1) == nrow(m1)),drop = FALSE]
}
)
-輸出
$A
[,1] [,2]
[1,] 1 3
[2,] 7 4
[3,] 9 1
$B
[,1] [,2] [,3] [,4]
[1,] 1 3 8 2
$C
[,1]
[1,] 1
[2,] 3
[3,] 8
[4,] 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/479559.html
