157

Juliaは、高速で構文的に適切な計算(たとえば、ここ)に非常に有望に見えますが、統計ワークフロー全体の観点からは、まだRに近いとは思えません。したがって、C ++が主にRプログラムで使用される場合、つまりコードの遅い部分を最適化するために使用したいと思います。ただし、Juliaの学習に時間を費やす前に、JuliaスニペットをRコードに埋め込むための機能が何であるかを知りたいと思います。

それで:

  • Rとジュリアを結ぶためにどんな施設がありますか?
  • ゼロからRcppのスケールで、それらはどれほど堅牢でよく考えられていますか?

RcppでR内からC++を呼び出すことができるように、RからJuliaに電話をかけたいと思います。ジュリアからRに電話したくない。(したがって、RCall.jlは機能しません)

4

8 に答える 8

62

私も1 月に Doug Bates が私にヘッズアップを送って以来、ずっと Julia を見てきました。しかし、@ gsk3 のように、豊富な R オブジェクトを Julia に渡したいので、これを「Rcpp スケール」で測定します。そして、それは現在まったくサポートされていないようです。

Julia は素晴らしくシンプルな C インターフェイスを備えています。のようなものが得られ.C()ます。しかし、最近 r-devel で議論されたように.C()、ほとんどの場合、.Call()実際の R オブジェクトを表す実際の SEXP 変数を渡すためには、実際には必要ありません。したがって、現時点では、この制限により、R から Julia を使用できる可能性はほとんどありません。

Julia が少し成熟し、適切な C++ インターフェイスを取得する前に、Rserve への tcp/ip を使用した間接インターフェイスが最初のスタートになるかもしれません。または、Rcpp に基づくものを使用して R から C++ に移行し、実際の R API が C レイヤーのみを提供するのと同様に、Julia にデータをフィードする中間レイヤー [誰かが作成する必要がある] に入る前に使用します。知らない。

そして、一日の終わりには、ある程度の忍耐が必要になる場合があります。Fritz Leisch が comp.os.linux.announce ニュースグループで最初の発表を行った 1996 年か 1997 年頃に、私が R に注目し始めました。当時、R の機能はかなり限られていました (しかし、もちろん、S 言語の完全な約束は、勝者がいることを知っていたからです)。そして数年後、私はそれを私の主要なモデリング言語にする準備ができました. その時点で、CRAN にはまだ 100 未満のパッケージしかありませんでした...

ジュリアはそこに着くかもしれません。しかし今のところ、私たちの多くは R で作業を完了し、Julia に興味を持って垣間見るだけだと思います。

于 2012-04-01T17:52:37.877 に答える
53

Julia の開発計画は、この回答で説明したように、C ABI を使用して呼び出し可能な共有ライブラリに Julia コードをコンパイルできるようにすることです。これが実現すると、R から Julia コードを呼び出すのは、C/C++ コードを呼び出すのと同じくらい簡単になります。ただし、これが可能になるまでにはかなりの作業が必要です。

于 2012-05-23T01:06:14.723 に答える
25

クイックアップデート。この質問がなされて以来、Julia内からRプログラムを呼び出すことができるJuliaパッケージの始まりがありました。

詳細はこちら:https ://github.com/lgautier/Rif.jl

于 2013-02-02T18:10:04.393 に答える
15

このプロジェクトを見た人はいますか?

https://github.com/armgong/RJulia

かなり新しいですが、要求されたことを正確に実行しているようです!

于 2014-10-08T11:10:50.590 に答える
9

また、私の試みであるJuliaConnectoRR パッケージもチェックしてみてください。パッケージはGitHubおよびCRANから入手できます。

目標は、Julia から関数を R に直接インポートして、R コードで R 関数のように使用できるようにすることです。Julia 関数の戻り値は R データ構造に変換され、R で使用でき、Julia に戻すこともできます。Julia と R をさらに統合するために、R 関数をコールバック関数として渡すことで、Julia から R にコールバックすることもできます。

XRJulia と同様に、JuliaConnectoR は TCP に依存しますが、機能指向であり、XRJulia のようなテキストベースの JSON メッセージではなく、最適化されたカスタム ストリーミング フォーマットを使用します。TCP による通信の利点の 1 つは、異なるバージョンの Julia と R に対する安定性です。これは、RCall や JuliaCall のような C インターフェイスのレベルでの統合を維持するのがはるかに困難です。

このパッケージは、Julia ≥ 1.0 および幅広い R バージョンで動作します。

于 2019-06-16T20:04:27.970 に答える