3

Rのbigmemoryパッケージは、言語へのポインターを返すbig.matrix何らかのオブジェクトとして R セッション間で共有できる行列をメモリに格納するクラスを提供します。C++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()

共有メモリ内のこのマトリックスで実行されるいくつかの関数をCまたはC++(私はよりよく知っています)に実装したいと思いますが、これを行う方法がわかりません。C

メモリ内のアドレスを指定すると、既知のサイズとともに double[][] in にアクセスできますCか? または私は完全に軌道から外れていますか?

4

1 に答える 1

3

幸運なことに、Dirk Eddelbuettel と Romain Francois は Rcpp という素晴らしいツール作成しました。これは、(非常に) 大変な作業をすべて行ってくれます。パッケージをインストールし、ビネットを読み、 Rcpp ギャラリーで利用可能なすべてのサンプル コードを再利用して楽しんでください

ここbigmemoryと組み合わせて使用​​する方法の例さえありますRcpp

于 2013-08-23T07:01:42.943 に答える