问题标签 [r-bigmemory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
272 浏览

r - R:大型稀疏三向张量或稀疏增广矩阵的文件支持存储的最有效方式

我想在 R 中有一个有效的框架,用于对长整数的大型 3 路张量(15000(时间维度)x 500000(第二维度)x 500(样本,3d 维度))进行文件支持存储,使用 as行/时间维度增强矩阵(即使用 15000*500000 x 500 矩阵),我需要功能来有效地检索该矩阵的特定部分以进行内存处理以及在处理后更新特定部分。对于密集矩阵,我可以使用该bigmatrix包,但在我的最终应用程序中,矩阵是稀疏的(大约 99% 为零),据我所知,bigmatrix目前不支持稀疏矩阵。有谁知道我可以在 R 中使用的任何其他选项?(由磁盘数据库支持的包ffdplyr我知道目前也不支持稀疏矩阵或张量)有什么想法吗?

密集张量/增广矩阵情况的示例代码(但也需要适用于大 1000 的稀疏张量/矩阵)是

0 投票
1 回答
54 浏览

r - Effective consecutive access to complete file-backed big.matrix in Rcpp?

I currently trying to find a implementation that allows for consecutive function calls, where in each call access to each element of a big matrix (up to 1.5e9 entries of doubles) is needed.

I used the bigmemory package for handling the matrix together with Rcpp for the function operations.

To be a bit more explicit, see the following code.

C++ code:

Function call in R:

Unfortunately, the consecutive function call slows down extremely at some point for increasing n_rows resp. n_cols.

My question:

Is this because the access to big.matrix elements leads to deletion of the first cached elements if RAM is exceeded, but in consecutive function calls exactly these 'first' elements of the big.matrix are needed? If 'yes', is there some better (improving performance) way of accessing the element in the loops or deletion of cached elements?

Thank you very much for any help!

0 投票
2 回答
188 浏览

c++ - 如何在 bigmemory rcpp 中修改文件支持矩阵的值

我正在使用 R bigmemory 包和 Rcpp 来处理大矩阵(1 到 1000 万列 x 1000 行)。一旦我将包含 0、2 和 NA 的整数矩阵读入 RI 中的文件备份大内存矩阵,我想通过 C++ 修改所有 NA 值,以便对每列的平均值或任意值进行插补(我在这里显示后者)。

下面是我编写的 Rcpp 函数,它不起作用。我希望BigNA(mybigmatrix@address)从 R 内部调用可以在矩阵中找到 NA 的元素并直接在支持文件中修改其值。

我认为问题可能出在对std::isnan(mat[j][i]). 我通过创建一个替代函数来检查这一点,该函数使用累加器计算 NA 值,并且确实没有计算任何 NA。但是一旦解决了这个问题,我也不确定表达式mat[j][i] = 1是否会修改支持文件中的值。写这些陈述对我有 R 背景的感觉很直观,但可能是错误的。

任何帮助/建议将不胜感激。

0 投票
1 回答
369 浏览

geospatial - 从 RasterBrick 创建 big.matrix 对象

为了对大型栅格数据集执行 kmean 聚类分析,我尝试使用该函数将RasterBrick对象转换为对象,但是当我将 .grd 文件读回时,所有信息都丢失了。big.matrixbrickR

我可以在我的目录中看到 .grd 和 .gri 文件,但我不知道如何将它们读回,或者如何将 .grd 文件提供给bigkmean函数。知道我该怎么做吗?

0 投票
1 回答
1272 浏览

r - 如何在 R 中处理海量数据并建立模型

我一直在尝试为包含 7000 万条记录的数据集构建一个模型R。我尝试了所有可能的选项来构建一个模型,比如clustering,使用ff库,h2o(这让我出错)bigmemorybiganalytics包。R使用我尝试过的选项,我无法处理如此庞大的数据。

您能否建议我除此之外的任何工作选项,以便我可以使用它来构建模型。我的笔记本电脑是 4GB RAM 和 64 位处理器。

0 投票
1 回答
174 浏览

matrix - 将几个大矩阵从 Rcpp 保存到 R 环境

我使用 Rcpp(尤其是 Rcpp Armadillo)来执行一个方法,该方法返回几个大矩阵,例如大小为 10000*10000。如何保存这些矩阵以在 R 环境中使用它们。假设我在 Rcpp 中的代码如下所示:

我编程的方式非常昂贵,需要足够的内存。但我需要 20000 矩阵来计算 R 环境中的估计器。如何保存矩阵?我不知道 bigmatrix 包是否可以帮助我。

最好的,

0 投票
1 回答
178 浏览

r - 等效于 R 中 big.matrix 的 row() 和 col()

我正在使用 bigmemory 包来处理大小为 8000 x 8000 的大型矩阵。

大矩阵的 row() 和 col() 等价物是什么?

当我尝试使用上述两个函数访问 big.matrix 对象时,我收到以下错误。

“行中的错误(phi):需要一个类似矩阵的对象作为'行'的参数”

下面是我的代码片段。

0 投票
1 回答
420 浏览

r - 如何对 big.matrix 对象进行转置?

如何对 big.matrix 对象进行转置?

我有一个 8000 x 8000 big.matrix 对象,我需要执行转置和乘法。怎么做?

b <- as.big.matrix(basis)

bTransb <- t(b) %*% b

这给了我以下错误

Error in t.default(b) : argument is not a matrix

我已经导入了 bigalgebra 库。还是行不通。

0 投票
2 回答
1178 浏览

r - R:大数据的Distm?计算两个矩阵之间的最小距离

我有两个矩阵,一个是 200K 行长,另一个是 20K。对于第一个矩阵中的每一行(这是一个点),我试图找到第二个矩阵中的哪一行(也是一个点)最接近第一个矩阵中的点。这是我在示例数据集上尝试的第一种方法:

但是,Error: cannot allocate vector of size 30.1 Gb当我使用该distm功能时出现错误。

关于这个主题有几个帖子:

这个bigmemory用于计算相同数据帧中点之间的距离,但我不确定如何调整它来计算两个不同矩阵中点之间的距离...... https://stevemosher.wordpress.com/2012/04/12 /nick-stokes-distance-code-now-with-big-memory/

这也适用于计算相同矩阵中点之间的距离矩阵...用于重复距离矩阵计算和超大距离矩阵分块的高效(内存)函数

这与我想要做的几乎相同,但他们实际上并没有提出适用于大数据的解决方案:R: distm with Big Memory我尝试了这种方法,它使用bigmemory,但出现Error in CreateFileBackedBigMatrix(as.character(backingfile), as.character(backingpath), : Problem creating filebacked matrix.错误,我认为是因为数据框太大。

有没有人想出一个很好的解决这个问题的方法?我对其他包装创意持开放态度!

更新了修复问题的代码

0 投票
1 回答
199 浏览

r - 从 big.matrix 中删除只有一个值的列

我有一个非常大的二进制矩阵,存储为 big.matrix 以节省内存(否则超过 2 gb - 500 万列和 100 行)。

我需要删除只有一个唯一值的每一列(在这种情况下,只有 0 或只有 1)。由于列数,我希望能够并行执行此操作。

如何在将数据压缩为 big.matrix 的同时做到这一点?我可以将其转换为 df 并遍历列以查找唯一值的数量,但这需要太多 RAM。

谢谢!