3

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

例如:

library(bigmemory)
> a <- as.big.matrix(matrix(0, 5, 5))
> a
An object of class "big.matrix"
Slot "address":
<pointer: 0x24ae350>

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

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

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

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

4

1 回答 1

3

好吧,幸运的是,Dirk Eddelbuettel 和 Romain Francois 编写了一个名为Rcpp的很棒的工具,它将为你完成所有(非常)艰苦的工作。安装包,阅读小插图并享受重用Rcpp Gallery上所有可用的示例代码

甚至还有一个如何bigmemoryRcpp 这里结合使用的例子

于 2013-08-23T07:01:42.943 回答