在之前推文python scipy 稀疏矩阵详解中,详细介绍了常用稀疏矩阵原理及在python中的使用经验。本篇推文聚焦R语言稀疏矩阵格式及其在单细胞多组学(scRNA, scATAC)中的应用。
R稀疏矩阵
dgTMatrix
即Sparse matrices in triplet form,该格式类比于python中的coo_matrix
,是最简单的稀疏矩阵存储方式,采用三元组(row, col, data)
(或称为ijv format
)的形式来存储矩阵中非零元素的信息。
dgCMatrix
即Compressed, sparse, column-oriented numeric matrices,类比于Python中的csc_matrix
,是一种按列压缩的稀疏矩阵格式,由三个一维数组indptr
, indices
, data
组成。dgCMatrxi
是R包Matrix中标准的格式,也是最常见的格式,单细胞多组学稀疏数据存储一般采用该格式。
dgRMatrix
即Sparse Compressed, Row-oriented Numeric Matrices,类比于Python中的csr_matrix
,和dgCMatrxi
相反,该格式稀疏矩阵按行压缩,原理上同样由三个一维数组indptr
, indices
, data
组成。dgRMatrxi
稀疏矩阵在单细胞组学分析中一般不显示使用。所以接下来的介绍以dgCMatrxi
为主,dgRMatrxi
的实现方法实际是类似的。
R稀疏矩阵常用操作方法
稀疏矩阵构建
######dgCMatrix######
方法一:Matrix(*, sparse = TRUE)
#Matrix包
mat <- Matrix(data = 0L, nrow=3201, ncol = 818, sparse = TRUE) #dgCMatrix
print(object.size(mat), unit="KB")
#4.7 Kb
dim(mat)
#[1] 3201 818
方法二:sparseMatrix()
#Matrix包
i <