有沒有一種簡單的方法來減少列的稀疏矩陣,同時考慮零值丟失(使用矩陣包)?R矩陣包:Demean稀疏矩陣
似乎有是兩個問題,我掙扎:
尋找適當的立柱意味着
空細胞被認爲是零,而不是丟失:
M0 <- matrix(rep(1:5,4),nrow = 4)
M0[2,2] <- M0[2,3] <- 0
M <- as(M0, "sparseMatrix")
M
#[1,] 1 5 4 3 2
#[2,] 2 . . 4 3
#[3,] 3 2 1 5 4
#[4,] 4 3 2 1 5
colMeans(M)
#[1] 2.50 2.50 1.75 3.25 3.50
正確的結果應該是:
colMeans_correct <- colSums(M)/c(4,3,3,4,4)
colMeans_correct
#[1] 2.500000 3.333333 2.333333 3.250000 3.500000
減列是什麼意思
減法也進行對失蹤細胞:
sweep(M, 2, colMeans_correct)
#4 x 5 Matrix of class "dgeMatrix"
# [,1] [,2] [,3] [,4] [,5]
#[1,] -1.5 1.6666667 1.6666667 -0.25 -1.5
#[2,] -0.5 -3.3333333 -2.3333333 0.75 -0.5
#[3,] 0.5 -1.3333333 -1.3333333 1.75 0.5
#[4,] 1.5 -0.3333333 -0.3333333 -2.25 1.5
附:希望發佈由兩個問題組成的問題不是問題。他們連接到同一個任務,似乎反映了同樣的問題 - 區分丟失的和實際的零值。
你確定你的最終矩陣是正確的,因爲你似乎減去列意味着行明智。這可能工作'比例(M,center = colSums(M)/ diff(M @ p),scale = FALSE)' – user20650
@ user20650我更正了適當的代碼以明智地減列。我在那裏提供了「掃描」功能,以顯示無法正常工作的解決方案。 – Pepacz