Rスクリプトをスタンドアロンの.exeファイルにコンパイルしますか?


85

matlabと同じように、Rスクリプトをスタンドアロン.exeファイルにコンパイルする簡単な方法はありますか?


15
非常に短い答え:いいえ。
Dirk Eddelbuettel 2012

2
実際に配布したいのですが、スクリプトとアルゴリズムを秘密にして、それを暗号化する方法や、この目的を達成するための他の方法はありますか?
ジョイス


1
@Joyce、コードを非表示にするための標準的な解決策は、アプリケーションをサーバーに配布することです。したがって、ユーザーはサーバー経由で接続します。コードを非表示にできるだけでなく、ユーザーは常に最新バージョンにアクセスできます。ただし、サーバーインフラストラクチャを確立する必要があります(おそらくRクラウドプロバイダーを使用するのが最適です)。
Tripartio 2017年

1
パッケージを作成すると、共通のコードを配布するのに役立ちます。私も、ありふれたタスク/関数のexeを作成することを検討してきました。これは、何度も繰り返される計算です。また、コーディングを使用しない/ UIベースのアプリを好む人とexeファイルを共有すること。残念ながら、まだ方法を探しています。
bonCodigo 2017年

回答:


28

実際のところ、要件を満たすソリューションを実現する方法があります。R-BloggerでのRを使用したデスクトップアプリのデプロイに関する記事をご覧ください。記事で詳しく説明されているように、単一のexeファイルよりも多くのものを使用することになります。

また、RGtk2を使用してRGtk2に注目したい思います。これにより、Rで独自のインターフェイスを開発することができます。プッシュが必要になった場合は、RコードをポータブルバージョンのRと一緒にパックできると思います。 1つのインストーラーとmakeおよびappへの依存関係。これにより、単一のexeファイルのような錯覚が生じます。

あなたの質問では、Rコードを解釈するスタンドアロンの実行可能ファイルを開発するのは簡単かどうかを尋ねました。簡単だとは言えません。アプリケーションからRコードを実行したい場合は、RCaller forJavaまたはR.NETを使用して簡単に実行できます。


1
デスクトップアプリをRでデプライすることに関するリンクされた記事は本当に良いです(ポータブルアプリを使用し、光沢があります!)、Thx!
Rヨーダ

2
@RYoda読んでよかったです。この主題に関心があります。Shinyを使い続けたい場合は、この記事で、ShinyアプリをWindowsデスクトップアプリとしてパッケージ化するための興味深いアドバイスを提供します。
コンラッド

javax.scriptAPI全体でRCallerスクリプトエンジンを使用することもできます。mhsatman.com/ rcaller
3-0– jbytecode

11

あなたのコメントに応えて:

実際に配布したいのですが、スクリプトとアルゴリズムを秘密にして、それを暗号化する方法や、この目的を達成するための他の方法はありますか?

を使用して関数を保存することで、これを(一種の)行うことができますsave()。たとえば、f()秘密にしておきたい関数は次のとおりです。

f <- function(x, y) {
  return(x + y)
}

どこにでも保存:

save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')

そして、あなたがその機能を使いたいとき:

load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")

すべての関数を別々のファイルに保存し、それらをフォルダーに入れて、1つの単純な古い.Rスクリプトですべてをロードし、何でも実行します。全部を圧縮して、誰にでも配布します。たぶんそれをパッケージにコンパイルすることさえあります。事実上、すべてが読み取り専用になります。

ただし、このソリューションはそれほど優れていません。関数の名前を入力することで、Rで関数を表示できるため、その意味で非表示になることはありません。ただし、.rdaファイルを開くと、その内容はすべて文字化けします。それはすべて、コードの受信者がRをどの程度経験しているかによって異なります。


提案をありがとう、他の人がコードを直接見ないようにする1つの方法である可能性があります。
ジョイス2013年

3
ただし、入力すると表示されますf
MAPK

4

暗号化されたコードを持つ1つの形式はpetals、TeachingDemosパッケージの関数に実装されています。

隠されたコードを見つけるには中級レベルのプログラミングスキルしか必要ないことに注意してください。ただし、意図的な努力が必要であり、ユーザーが誤ってコードを見たと主張することはできません。次に、ピークなしの契約を実施するために、何らかの種類のライセンス契約を締結する必要があります。


グレッグ、ありがとう。あなたが言った関数を調べただけなのに、それを使ってコードを隠す方法がわからないので、もっと詳しく教えていただけませんか。ありがとうございます。
ジョイス2013年

@Joyce、petals関数はコードを非表示にしません。これは、コードのキー部分を非表示にする一例です(キー部分を読み取ることができますか?)。暗号化(ブリーチング)を行うには、他のツールが必要です。より簡単なアプローチについては、stat.ethz.ch / pipermail / r-devel / 2011-October /062236.htmlで説明されています。バイトコンパイルも役立つ場合がありますが、実際には何らかのライセンス契約が必要です。
グレッグスノー

3

さて、デプロイメントマシンにRをインストールする必要があります。実行可能ファイルを作成することに関しては、それが可能かどうかはわかりません。ただし、Rスクリプトを呼び出す別のプログラムを作成することはできます。Rはインタープリタ型言語です。それは不可能。


3
Rコンパイラに関するニュースはありますか?私はPythonを使い始めましたが、exeファイルを作成する簡単な方法があります(たとえば、py2exeやcx_freeze)。Rでこのようなものをすぐに見る機会はありますか?
トニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.