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

时间:2013-08-23 06:57:16

标签: c++ c r rcpp r-bigmemory

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,您还可以使用CC++来调用.Call() / .C()个代码。

我想在CC++(我更熟悉C)中实现一些函数,这些函数将在共享内存中的此矩阵上运行,但我不知道如何解决这个问题。

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

1 个答案:

答案 0 :(得分:3)

Ok luckiliy for you Dirk Eddelbuettel和Romain Francois写了一个名为Rcpp的精彩工具,它将为您完成所有(非常)艰苦的工作。 安装软件包,阅读小插图并享受重用Rcpp Gallery

上提供的所有示例代码

甚至有一个示例说明如何将bigmemoryRcpp here

结合使用