問題タブ [rcpp]
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.
xcode - インラインおよび Xcode 4.2.1 でのエラー
Macbook でインラインパッケージを動作させようとしています。次のコード ブロック (cxxfunction の例から) は失敗します。
このエラーで:
g++ が利用可能であるため、これは奇妙です。
Mac OS 10.7.2 で Xcode 4.2.1、R 2.14.0 を実行しています。
r - SHLIB を使用してスタンドアロン Rcpp 関数をコンパイルおよびロードする
次の関数をSHLIB
(として保存foo.cpp
)でコンパイルしようとしています:
私は試します
このファイルをインクルードするにはどうすればよいですか? これは Rcpp でスタンドアロン関数をコンパイルする正しい方法ですか? もちろん、Rcpp を でインストールしましinstall.packages('Rcpp')
た。
更新: RI get で Rcpp.h の場所を見つけようとしています:
でも、
更新 2:
http://www.mail-archive.com/r-help@r-project.org/msg79185.htmlを見て、試してみました
と を生成foo.o
しfoo.so
ました。これをRにインポートするにはどうすればよいですか?
更新 3:dyn.load
したがって、次のよう
にロードできます。
次のように正常に呼び出すことができます
関数自体は表示されませんが。
c++ - Rcpp::CharacterVector を std::string に変換します
Rcpp関数内でファイルを開こうとしているので、ファイル名を char* または std::string にする必要があります。
これまでのところ、次のことを試しました。
しかし、コンパイル時にエラーが発生するas
ため、明らかに機能しません。Rcpp::CharacterVector
引数から文字列を取得する簡単な方法や、Rcpp 関数の引数からファイルを開く簡単な方法はありますか?
r - 固定位置の部分文字列を同等またはそれ以上の長さの文字列に効率的に置き換える
固定位置の部分文字列を同じかそれ以上の長さの別の文字列に置き換える効率的な方法は何でしょうか?
たとえば、次の例では、最初に「abc」の位置を見つけてから置換することで、部分文字列「abc」を置換します。
ただし、部分文字列「abc」は常に文字位置 2、3、および 4 にあることがわかっています。この場合、文字列の一致を実行する必要がなく、文字インデックスが使用されるように、これらの位置を指定する方法はありますか?代わりは?
substr() を使用しようとしましたが、置換文字列が置換される部分文字列よりも大きい場合、期待どおりに機能しませんでした。
お時間を割いていただき、誠にありがとうございました。
トニー・ブレイアル
PS上記は私がやりたいことを行う最も効率的な方法かもしれませんが、より良い方法がある場合に備えて尋ねると思いました:)
===== タイミング =====
上記のタイミングは、以下のコードから生成されました。
c++ - OSX 10.6 で stringstream が Rcpp で動作しない
std::stringstream は Rcpp では動作しないようです。問題を切り分けるために、最小限のプログラムを作成しました。
tsmall
文字列を float に変換するだけです。はRf_PrintValue
デバッグ用です。OSX 10.16.7 の R では、
別のマシン (Ubuntu) では、期待どおりに動作します。
OSX で小さな通常の C++ プログラムを試してみましたが、もちろん stringstream を使用して文字列と浮動小数点数を変換しても問題なく動作します。
OSX で使用されるコンパイラは MacPorts g++-mp-4.4 です。
更新: _GLIBCXX_DEBUG が有効な場合、stringstream と Stringstream の OSX が double で動作しないという以前に提起された問題を発見しました。ただし、/usr/bin/g++-4.2 でデフォルトの gcc-4.2 を使用してその問題でテスト プログラムをコンパイルすると、エラーが発生しますが、/opt/local/bin/g++-mp-4.4 でコンパイルすると正常に動作します。
ただし、Rcpp コードを次のようにコンパイルしました。
gcc-4.4を使用した:
したがって、これが同じ問題かどうかはわかりません。
更新 2: https://discussions.apple.com/thread/2166586?threadID=2166586&tstart=0で の議論に従って、コードの先頭に以下を追加しました。
また、@Kerrekの提案に従って初期化f
さfloat f=0;
れます(ただし、これは何も変更しないはずです)。stof
Mac での出力は同じです。
c++ - Rcpp でデータ フレームを構築する
Rcpp関数でデータ フレームを作成したいのですが、実際にデータ フレームのように見えません。ベクトルなどを押してみましたが、同じことになります。検討:
Rで:
r - Rパッケージを開発するためのRCMDINSTALLでのCXXFLAGSの変更
開発中のパッケージをデバッグしようとしています。パッケージのビルド、チェック、インストールにはmakefileを使用しています。パッケージはRcppパッケージであるため、すでにmakevarsファイルとmakevars.winファイルが含まれています。私が探しているのは、特定のmakeルールのためだけにCXXFLAGSを変更することでした。その後、でmake debug
実行さR CMD INSTALL
れますCXXFLAGS= -Wall -pedantic -g -O0"
が、通常はデバッグ情報なしmake install
で実行されます。CXXFLAGS=-O3
パッケージ、個人、またはシステムのmakevarsファイルを変更せずに、これを動的に変更する良い方法はありますか?
c++ - Rcppでsize_tのラップを返します
私はRcppを初めて使用するので、まだ盲目的に自分の道を見つけています。問題の長所と短所は、ポインターを生成するオブジェクトがあり、そのポインターをRに返したいということです。
ポインタをにキャストすると必要な精度が維持されることがわかりましたが、。size_t
でそれを返すことはできないようですwrap
。
以下のコードでは、willを返すだけでunsigned long int
コンパイルされ、他のコードはエラーをスローします。スペースの都合上、ここには含めません。そして私のオブジェクトでは、にキャストすると、unsigned long int
精度が失われたためにコンパイラが失敗します(これはすべてコメントアウトされている最初のブロックにあります)。
このタイプのオブジェクトのテンプレートをsize_t
作成するという選択肢を避けるために、私のニーズにはsを使用するだけで十分です。wrap
変更ログを確認しましたが、size_tがサポートされているようです。概要では、のwrap
サポートも提案されていsize_t
ます。