嗯,我想我已經理解了這個代碼...讓我們試着解釋它! (請糾正我,如果我錯了)。
我們的數據有稀疏矩陣(即關於內存的詳細handly,link),用as
它強制轉換爲特定的格式,這種矩陣(稀疏矩陣三元組格式,link)的結構:三列與i和j索引爲這些非零值。
y <- matrix_counts # sparse matrix
AAACCTGAGAACAACT-1 AAACCTGTCGGAAATA-1 AAACGGGAGAGCTGCA-1
ENSG00000243485 1 . .
ENSG00000237613 . . 2
y2 <- as(y, "dgTMatrix") #triplet format for sparse matrix
i j x
1 9 1 1 #in row(9) and column(1) we have the value 1
2 50 1 2
3 60 1 1
4 62 1 2
5 78 1 1
6 87 1 1
後,只需要列的「i」(slot(data, "i")
),因爲我們只需要行索引(知道行是零不同),並刪除重複(unique
)最終得到的是矢量與該行的索引將被用於過濾原始數據:
y3 <- unique(1 + slot(as(exprs(gbm), "dgTMatrix"), "i"))
[1] 9 50 60 62 78 87
data <- data_raw[y3,]
我與sort
和1+
有點糊塗,但我認爲這是基本的概念。因此,總結一下,我們從這個非零行(基因)中取出行索引,並用它來過濾我們的原始數據......另一種刪除非表達基因的原始方法,有趣!
你的對象data_matrix被轉換爲dgTMatrix,這個對象可能有不同的插槽,但你只對I感興趣。出於某種原因你給它們加1,而你只保留唯一的值。沒有什麼是「刪除」的。這很難進一步幫助,考慮給我們輸出(head(dgTMatrix,50))' –
@Moody_Mudskipper,謝謝你的幫助!我想我剛剛瞭解代碼(請參閱下面的答案)。 – jgarces