相关疑难解决方法(0)

如何在R中获得一个大的稀疏矩阵?(> 2^31-1)

我使用一些 C++ 代码从数据库中获取一个文本文件,并从Matrix包中创建一个 dgcMatrix 类型的稀疏矩阵。我第一次尝试构建一个具有超过 2^31-1 个非稀疏成员的矩阵,这意味着稀疏矩阵对象中的索引向量也必须长于该限制。不幸的是,向量似乎使用 32 位整数索引,就像 Rcpp 中的 NumericVectors 一样。

除了从头开始编写全新的数据类型之外,R 是否为此提供了任何便利?我不认为我可以使用太奇特的解决方案,因为我需要glmnet识别结果对象。

r sparse-matrix 32bit-64bit rcpp

6
推荐指数
2
解决办法
885
查看次数

对长向量(超过 2^31 个元素)的稀疏矩阵支持

我知道这个问题过去曾被问过(例如,这里这里),但这些问题已经存在多年并且尚未解决。我想知道从那时起是否创建了任何解决方案。问题是 R 中的 Matrix 包无法处理长向量(长度大于 2^31 - 1)。就我而言,由于内存和时间限制,运行 XGBoost 模型需要稀疏矩阵。XGBoostxgb.DMatrix支持使用dgCMatrix对象。但是,由于我的数据大小,尝试创建稀疏矩阵会导致错误。这是这个问题的一个例子。(警告:这使用 50-60 GB RAM。)

i <- rep(1, 2^31)
j <- i
j[(2^30): length(j)] <- 2
x <- i
s <- sparseMatrix(i = i, j = j, x = x)
Run Code Online (Sandbox Code Playgroud)

validMethod(as(object, superClass)) 中的错误:尚不支持长向量:../../src/include/Rinlinedfuns.h:137

截至2019年,这个问题有解决方案吗?

我正在使用该包的最新版本Matrix,1.2-15。

memory r sparse-matrix xgboost

5
推荐指数
1
解决办法
1095
查看次数

标签 统计

r ×2

sparse-matrix ×2

32bit-64bit ×1

memory ×1

rcpp ×1

xgboost ×1