问题标签 [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 回答
241 浏览

r - Use igraph with bigmemory in R

I am not able to read bigmemory object in igraph in R

Is there anyway to read big.matrix datatype in igraph?

0 投票
2 回答
1716 浏览

r - 如何在 Windows 操作系统上安装 BigMemory 和 bigrf

我一直在尝试在我的 R 安装上安装 bigmemory。我的操作系统是 windows 7 64 位,我已经在 R V2.15.1、2.15.2 和 3.0.1 64 位上尝试过,但我无法让它工作。

我尝试了几种选择

  1. 下载当前源并在 R v3.0.1
    install.packages("D:/Downloads/bigmemory_4.4.3.tar.gz", repos = NULL, type="source")中运行命令,
    但这会给出错误“错误:仅 Unix 软件包”
  2. 在 R V2 V3 等的各种安装中下载较旧的源并运行类似的命令,
    这给了我一个错误“错误:包'bigmemory'的配置失败”

有任何想法吗?我实际上正在尝试安装 bigrf 但 bigmemory 似乎是一个依赖项。有什么解决方法吗?

非常感谢

0 投票
1 回答
291 浏览

c++ - 通过 C 中的指针从 R 中的 big.matrix 访问一块内存

R 中的bigmemory包提供了一个类,该类big.matrix将一个矩阵存储在内存中,该矩阵可以作为某种C++对象在 R 会话之间共享,并返回一个指向该R语言的指针。

例如:

使用bigmemory包中的更多函数,我可以将矩阵的简短描述写入文件,打开另一个 R 会话,并从新的 R 会话访问内存中的矩阵。

R您也可以使用或调用C/C++编码。.Call().C()

我想实现一些函数C或者C++(我更熟悉C)将在共享内存中的这个矩阵上运行,但我不知道如何去做。

给定内存中的地址以及已知大小,我可以访问 double[][] inC吗?还是我完全偏离了轨道?

0 投票
1 回答
1377 浏览

r - R bigmemory attach.big.matrix 对于非常宽的矩阵来说非常慢

我正在使用包 bigmemory 与 R 中的大型矩阵进行交互。这适用于大型矩阵,除了attach.big.matrix()重新加载使用创建的二进制文件的函数read.big.matrix()比原来调用read.big.matrix(). 这是一个例子:

当列数较少(即 1000)时,代码按预期工作并且attach.big.matrix()read.big.matrix(). 但是对于 1,000,000 列,attach.big.matrix()速度要慢 10 倍!

另外,请注意,当没有列名(即注释掉colnames(X)行)时,这个性能问题完全消失了,我可以在零时间内附加。这表明瓶颈在解析中X.desc,应该有更好的方法attach.big.matrix()

与我的真实数据相比,这个矩阵很小。

或者我可以做一些不同的事情吗?

谢谢

系统信息:

Intel Xeon E5-2687W @ 3.10GHz,64 Gb RAM

Ubuntu 12.04.2 LTS

R 3.0.1

bigmemory_4.4.3

0 投票
2 回答
1840 浏览

r - 未在 R 64 3.0.2 上安装包 bigmemory

我正在尝试在 Windows 上的 R 64 版本 3.0.2 中安装 bigmemory 包。我收到以下错误:

install.packages('bigmemory')

任何帮助或见解将不胜感激。我在以前的 R 版本 2.15 中遇到了同样的错误。

0 投票
1 回答
565 浏览

r - 使用 R 会话崩溃重新加载“filebacked.big.matrix”

感谢您阅读这篇文章!

在这里,我在 R 中使用 big.matrix 时遇到问题。使用以下代码:

如果我将其保存big_matrix_object.RData.And 下次重新加载它时,R 会话将遇到崩溃。我该如何避免这种情况?感谢您的帮助!

0 投票
1 回答
1255 浏览

r - 在 R 中计算 big.matrix 的行总和?

我有一个大矩阵,大约有 6000 万行和 150 个列(总共大约 90 亿个元素)。我已将此数据存储在一个big.matrix对象中(来自 package bigmemory)。现在,我希望计算每一行的总和,这是一个问题,因为它big.matrix是面向列的,所以据我所知,所有汇总函数都是面向列的(例如colsumcolmax等)并且没有可用的函数默认用于计算行总和。我当然可以apply(x, 1, sum),但这需要很长时间。我还可以一一遍历列并使用矢量化添加来添加它们:

但这仍然需要 20 多分钟,而且显然不是最理想的,因为它每次通过循环都会创建一个新的 6000 万元素向量。似乎必须有一些更快的方法来做到这一点。

编辑

我通过一次处理大约一百万行的块,并在这些块上调用 rowSums,然后将结果连接起来,将这个时间缩短到了 10 分钟。不过,我仍然很想知道是否有优化的方法来做到这一点。

0 投票
2 回答
1124 浏览

r - 子集 big.matrix 的正确方法

我想知道是否有一种“正确”的方法来对 R 中的 big.matrix 对象进行子集化。对矩阵进行子集化很简单,但该类总是恢复为“矩阵”。当处理像这样的小数据集但处理大量数据集但处理非常大的数据集时,这不是问题,子集仍然可以从“big.matrix”类中受益。

0 投票
1 回答
505 浏览

c++ - R Rcpp big.matrix 加入

我正在尝试在 R 中为 big.matrix 对象实现一些基本的 C++ 代码。我正在使用 Rcpp 包,在这里阅读了演示,甚至应用了我在rcpp-devel 列表中找到的另一个简单函数:

这个fun函数工作得很好,修改了 big.matrix 对象。

但是,当我尝试一个简单的方阵转置函数时,矩阵不会被修改。为什么该fun功能可以工作,但我的“BigTranspose”却不行?

0 投票
1 回答
2318 浏览

r - 使用 big.matrix 对象计算欧几里得距离矩阵

我有一个带有维度big.matrix的类对象。这些值都是整数(公里)。我的目标是使用 计算欧几里得距离矩阵,并因此得到一个对象 class 。我想知道是否有这样做的最佳方式。R778844 x 2big.matrixbig.matrix

我选择使用该类的原因big.matrix是内存限制。我可以将 my 转换big.matrix为类对象matrix并使用 计算欧几里得距离矩阵dist()。但是,dist()将返回一个不会在内存中分配的大小的对象。

编辑

bigmemory软件包的作者和维护者 John W. Emerson 给出了以下答案:

你可以使用我期望的大代数,但这对于通过 sourceCpp() 的 Rcpp 来说也是一个非常好的用例,并且非常简短和容易。但简而言之,我们甚至不尝试提供高级功能(除了我们作为概念验证实现的基础功能)。一旦您开始谈论内存不足,没有一种算法可以涵盖所有用例。