29

厄介なC++コードに頼ることなく、一部のRコードの速度を向上させるためにrcppを調べたいと思います(これである程度の成功を収めましたが、地獄のコードのように見えます)。

そこで、Rcppで提供されているドキュメントと、 DirkEddelbuettelのサイトで提供されているドキュメントのバンドルを確認しました。RcppExamplesをインストールして確認しましたが、(少なくともそのドキュメントから)これらのほとんどはRcppClassic?を参照しています。それに加えて、私はいくつかのグーグルをしましたが、それは基本的な質問のように見えるものへの答えにはなりませんでした。

  • Rcppのインデックスはゼロベースまたは1ベースで機能しますか
  • リストはとの両方operator()を 提供しますoperator[]が、明らかにそうではありません operator[[]]。どれがRに類似し[]ているかは明らかではありません。[[]]
  • Rcppの要素に対するサポートはありますか(存在しないようです)?

注:実際、Rcpp-introduction.pdfの最初の例からいくつかの回答を見つけましたが、それは運のように感じました。

また、私stlは非常に錆びているので、誰かがリストの各要素が(たとえば)printstlスタイルのループで-edされている簡単な例を私に提供できれば、それは素晴らしいでしょう。

誰かが私をこの情報を見つけられなかった馬鹿と呼びたいのなら、先に進んであなたの一日を作ってください。それから私のものを作って、私が必要とするドキュメントを私に指摘してください:-)

Eddelbuettel氏と他のRcpp作成者への提案として(私は彼らの何人かがこれを読むことを期待しています):doxygenによって提供されるクラス階層などは、すでにRcppに深く関わっているときは本当にきれいですが、初心者にとっては( Rcpp)、私は「このクラスのこのメソッドは、このヘッダーファイルでこの演算子の宣言を見つけることができる」ではなく、「Rのその関数のようにこれを行う」のリストに興味があります。結局のところ、Rcppの目標の1つは、RでC ++を使用するためのしきい値を下げることだと理解していますか?注:私が見て理解したことから、私はRcppの実際のコードを高く評価し、その作成者に最高の敬意を払っています。基本的なドキュメントの欠如が単に「リソースの不足」の結果である場合、私はリソースになりたいと思っています(例:「基本的な」作業

4

1 に答える 1

21

私はこれに答え始める場所がよくわかりませんが、ここに簡単な試みがあります:

  • パッケージにはウェブサイトがあります。Webサイトにドキュメントがリストされています。

  • パッケージには8つのビネットがあります。それらは明確にリストされています。それらは主にドキュメントとして読むことを目的としており、いくつかはより入門的で、いくつかはより高度です。一部(単体テストの出力など)は、品質管理のイニシアチブです。

  • Rcpp-introductionと呼ばれるビネットがあります。繰り返し参照します。読むことをお勧めします。これは現在、査読および公開された論文でもあり、信頼性をさらに高める可能性があります。

  • Rcpp-FAQと呼ばれるビネットがあります。最初の質問は「どうやって始めればいいの?」です。これは、前述のRcppの紹介を示しています。

  • プロジェクト専用のメーリングリストがあり、実際にアーカイブを読むことができます。

  • 数多くの講演を行ってきました。スライドは、GoogleTechTalkの90分の録音と同様に利用できます。

  • StackOverflowにもタグがあります:[rcpp]。以前の投稿を読むことができます。

  • RcppのCRANページには、それを使用しているとして明確にリストされている20を超えるパッケージがあります。あなたは彼らのソースコードを読むことができました。

とはいえ、C ++の代わりにRcppを使用することoperator[[]]はできないため、C ++に存在できないことを知らない、または理解していない場合は、私たちもお手伝いできません。これは魔法の妖精でも、R-to-C++コードコンパイラでもありません。むしろ、その焦点は、RからC ++コードにアクセスするのをはるかに簡単にすることであり、場合によっては、C++の実践を改善することさえできます。本質的に、それは「超加法性」を目指しています。RとC ++の組み合わせは、どちらか一方だけでは不十分です。

最後に、RcppExamplesパッケージ(ちなみに新旧のAPIをカバーしています)がより多くの例を使用できることを認めます。ただし、そのソースは、古い(「クラシック」)から新しい最新のAPIへの優れた移植のヒントを提供します。

しかし、私たちが自分で書くことができるドキュメントはそれほど多くありません。私自身、上記の箇条書きは非常に網羅的だと思います。ただし、チェーンの最も弱い要素部分に磨きをかけた可能性があります。それは不運です。ここにリストされている他のポインターのいくつかを試してみてください。

于 2011-05-13T13:23:28.817 に答える