问题标签 [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 投票
1 回答
961 浏览

xgboost - 将 XGBOOST 应用于大型数据集

我有一个大小约为 5.3 GB 的大型数据集,我在 R 中使用 bigmemory() 存储了数据。请让我知道如何将 XGBOOST 应用于此类数据?

0 投票
2 回答
679 浏览

r - 标题行和第一个数据行之间的维度不匹配。大矩阵

我正在处理大型数据集。我可以使用read.table命令读取其中的一些,但使用参数fill=TRUE,因为此类数据集有一些代表 NA 的空白。

现在,我有一个高达 35 Gb 的数据库,所以通常的read.table命令是无用的,所以我在包中找到了 read.big.matrix 函数bigmemory。问题是它返回以下错误:

“标题行和第一个数据行之间的维度不匹配。” 我认为这是因为它没有将空白读取为 NA。

你知道我该如何解决这个问题吗?谢谢。

0 投票
2 回答
1279 浏览

r - R bigmemory 不会读取大的 csv 文件

我正在尝试使用read.big.matrixRbiganalytics包以类似于Vignette for bigmemory的方式加载 689.4 MB csv 。

小插图代码:

根据 42- 的评论,我在命令行上使用 cut 删除了因子变量cut -d, -f9,11,17,18,23 --complement 2008.csv > 2008cut.csv

然后,我使用 sed 删除了数据中发现的任何 NA 值sed -i 's/NA/0/g' 2008cut.csv 即使使用这些预处理步骤,我也会收到相同的错误。

我的代码:

尝试运行 read.big.matrix 时收到以下错误:

我发现其他人有这个问题,但他们有混合数据类似问题但没有回应。在我搜索的某个时间点,邮件列表中的某个人询问用户是否可以运行类似的东西x <- big.matrix(nrow=1000,ncol=10)来确保 bigmemory 正常工作。我能够运行该代码并生成一个 big.matrix

任何指导将不胜感激!

软件详情:

  • 数据:2008 年文件
  • R:3.2.3
  • 操作系统:x86_64-pc-linux-gnu
  • 大内存:4.5.19
  • 大分析:1.1.14
0 投票
1 回答
209 浏览

r - 从集群工作人员处理 big.matrix

我正在尝试从 Windows 机器上的 parLapply 函数访问 big.matrix(不是文件支持)。但是,调用 big.matrix 时 R 崩溃 - “R for Windows 前端停止工作”。

我需要先附加 big.matrix 吗?我该怎么做呢?非常感谢任何帮助。

0 投票
1 回答
529 浏览

r - 如何查看 bigmemory 包的 big.matrix 对象的实际内存大小?

我正在使用该bigmemory包加载繁重的数据集,但是当我检查对象的大小(使用 function object.size)时,它总是返回664 bytes。据我了解,权重应该与经典的 R 矩阵几乎相同,但取决于类(双精度或整数)。那么,为什么我会得到 664 个字节作为答案呢?下面是可重现的代码。第一个块真的很慢,所以请随意减少模拟值的数量。使用 (10^6 * 20) 就足够了。

0 投票
2 回答
260 浏览

r - 从 Rcpp 中的 bigmemory 对象中提取具有 NA 的列

我正在尝试创建一个从 Rcpp 中的 big.matrix 对象中提取列的函数(以便在将结果带到 R 之前可以在 cpp 中对其进行分析),但我不知道如何让它识别NA(它们现在显示为 -2147483648 - 如下面的最小示例所示)。如果我可以直接从 Rcpp 访问函数GetMatrixCols ( src/bigmemory.cpp ) 会更好,但我还没有找到一种方法来做到这一点。

0 投票
0 回答
249 浏览

c++ - Rcpp:使用模板函数时发生错误

我正在修改我的 biglasso 包以适应不同的数据类型big.matrix。当前版本仅支持double类型。源代码在这里

我所做的只是简单地添加标题并对以作为输入template的函数进行必要的更改。big.matrix下面的函数是一个例子:xpMat是指向big.matrix.

但是,在我进行更改后,R 包无法编译。以下是错误消息。对我来说,它说明了一些与crossprod_bm出错有关的事情:

谁能告诉我是什么虫子?这些错误与类型转换有关吗?我假设计算中的类型转换可以自动完成。

非常感谢您!

[响应@Coatless的更新]

我确实有调度员,如下所示。

[结束更新]

[更新 2]

我将所有更改提交到GitHub,以便您可以看到全貌。如果您能提出任何意见,我将不胜感激。

[更新 2]

[更新 3]

我认为cdfit_gaussian_edpp_cpp应该返回Rcpp::List。我纠正了这个(如上),但仍然有类似的错误。

似乎我的代码中的模板一定有问题,也许是定义模板?调用模板?

如果我不使用模板,一切都会好起来的!例如,如果我将错误消息中捕获的函数恢复为不是模板函数,那么发生的情况是该函数不会在错误中捕获。但是下一个模板函数将被捕获并带有类似的错误消息。

但是,另一方面,我尝试使用and来遵循示例Rcppbigmemory。我更改了模板功能如下,这类似于我在包中使用模板的方式。但它有效!这让我觉得我正确使用了模板。

我在这里真的很困惑,如果任何专家可以指出错误,我将不胜感激!太感谢了!

[更新 3]

0 投票
0 回答
531 浏览

r - 在 R 中融化 ~80gb 分布矩阵 - 效率策略?

朋友们,

我用 igraphs shortest.paths 在无向图上计算了研究人员之间的距离矩阵,得到了一个 80gb 的矩阵。下一步是熔化矩阵的上三角形。我需要在 16 个不同的图表上定义这种类型的矩阵。

当尝试在矩阵上运行任何操作(data.table::melt、lower.triangle <- NA 或 is.infinite <- NA)时,我得到“无法分配向量...” - 错误,即使运行它具有 244GiB RAM 的 Amazon AWS r3.8xlarge。

我测试过的策略:

  • 拆分矩阵和融化子矩阵:太耗时(每个矩阵 2 天)或并行时消耗内存

  • 转换成 big.matrix:太耗时(每个矩阵 1 天)

有什么想法即使我有 2-3 倍的可用内存可用,为什么我会收到错误对于这种大小的数据集使用哪种策略?

提前非常感谢!

会话信息:

ami-b1b0c3c2(来自http://www.louisaslett.com/RStudio_AMI/

RStudio 0.99.903

R 3.3.1

r3.8xlarge - 实例

我的代码(df_Network 有 2 列:AuthorID 和 ArticleID):

链接到示例数据: https ://www.dropbox.com/s/eaud2np33e5y6iv/df_network_2000-2005.RData?dl=0

0 投票
2 回答
2272 浏览

r - 使用 big.matrix 操作

我必须使用 big.matrix 对象,并且我无法计算某些函数。让我们考虑以下 big.matrix:

对应的矩阵对象为:

如果我用矩阵对象计算这个操作,它可以工作:

虽然如果我使用 big.matrix 对象(实际上是我必须使用的),但它不起作用:

问题是 2:* 操作(创建矩阵每个元素的平方),它会产生错误:

x * x 中的错误:非数字参数转换为二元运算符

以及产生错误的 sqrt 函数:

sqrt(x) 中的错误:数学函数的非数字参数。

如何使用 big.matrix 对象计算此操作?

0 投票
0 回答
214 浏览

c++ - 将 RcppArmadillo 与 bigmemory 一起使用,返回一个 bigmatrix

我正在尝试big.matrix使用 using进行一些操作RcppArmadillo。问题是我总是需要保持我的结果以big.matrix避免将数据加载到 RAM 中。这是我创建 a 转置的代码big.matrix

big_T.cpp

回复:

[1] 对

我发现我的尝试没有效率有两个原因:

  1. big.matrix我需要在 R 代码中创建第二个。有没有办法big.matrix 在 c++ 中创建指向新对象的外部指针?
  2. 为了工作memcpy,我必须创建一个循环。如何一次复制所有矩阵?