我希望能够在 data.table
框架中工作,其中有许多原因并未在此文章中提及。 data.table
是否具有指标矩阵的稀疏表示形式,类似于 Matrix
包?
library(Matrix)
library(data.table)
set.seed(123409L)
ints <- sample.int(2L, 1e6, replace=T, prob= c(0.9, 0.1)) - 1
m <- Matrix(ints, ncol= 1000)
dt <- data.table(matrix(ints, ncol= 1000))
pryr::object_size(m) # 1.22 MB
pryr::object_size(dt) # 8.1 MB
假设在实际使用情况下,我有接近6e8个元素,其中增长是理论上无限的。
如果这个问题已经得到回答,请提前谅解。如果有重复,请标记;但我在搜索中没有找到任何重复的内容。
mdt = as.data.table(which(matrix(ints, ncol=1000)==1, arr.ind = TRUE))
是另一种表示方式,相对较小(可能只是因为我扔掉了m
中看到的@x
部分)。以这种方式存储,您将无法访问所有与 dgCMatrix 对象兼容的 Matrix 函数,因此可能不值得这样做。 - Frank