0

ある時点で Cpp プログラムを呼び出す R パッケージを作成しています。

私は R と Cpp でのプログラミングの専門家ではありませんが、問題をできるだけ明確に説明しようとします。

  • Cpp コードはいくつかのグローバル変数を作成し、後で変更します (私はそれが悪いことを知っていました...)。

  • Rを開いてパッケージからR関数を1回実行すると、すべて問題ありません。しかし、再実行すると、Cpp コードによって作成されたグローバル変数が再初期化されず、代わりに変更された値が使用されているようです。つまり、Cpp によって作成されたグローバル変数は「メモリにとどまり」、プログラムを再度呼び出しても再書き込みされないようです。

私の問題が十分に明確であり、誰かがなぜこのように振る舞うかを説明してくれることを願っています. 前もって感謝します。

4

1 に答える 1

2

実際、あなたはそれをやや不十分に説明していますが、本質的にはそれを理解する必要があります

  • 関数呼び出しは、R からの C++ を含むかどうかに関係なく、単なる一時的なものです。

  • したがって、値を返すと言うか、または...

  • 「状態」を維持したい場合は、適切なクラスを作成し、最初にインスタンス化してから、オブジェクトを使用して呼び出しを行います。Rcpp は R / C++ インターフェースを支援します。

于 2013-04-12T11:48:48.210 に答える