私はCRANにリリースするために新しいRパッケージを開発しており、そのソースコード内で直接system()
コマンドを呼び出すことを希望しています。例えば、私は私のRパッケージ内で直接gzip
ユーティリティを使用したいと思います:Rパッケージ開発のベストプラクティス:system()コマンドを使用していますか?
write.csv(mydat, "mydat.csv")
system("gzip mydat.csv", wait=FALSE)
さらに重要なのは、私は直接私のRパッケージ内の他の既存のコマンドラインユーティリティを活用したいと思います。そして、コマンドラインユーティリティで、私はR.
に書き換えること些細なではありません、実際の大規模なコマンドラインのソフトウェアプログラムを意味するので、私の質問は:(外部の使用を指定するためのいくつかのベストプラクティスは何ではありませんR)の開発中のコマンドラインライブラリ
は例えば、RパッケージDESCRIPTION
ファイル内Imports
とDepends
フィールドは、あなたのRパッケージ内に既存のRライブラリの使用を指定するための唯一の良いです。パッケージマネージャ(例:brew)を使用して、既存の非Rコマンドラインライブラリを手作業でインストールする必要があります。これはR Studio内の自己完結型作業のベストプラクティスに反しますIDE。さらに、このようなラウンドアバウトアプローチは、コマンドライン実行可能ファイルへの完全なパスの一致、R Studio IDEとの調整などが難しいため、再現性のある方法で動作するという保証はありません。
同様に、 https://cran.r-project.org/web/packages/ssh.utils/index.htmlなどのツールは、R環境内での基本的なコマンドラインのニーズにのみ対応するため、大きなコマンドラインソフトウェアプログラムを使用するニーズには適用されません。
参考:私が開発しているRパッケージは、個人用ではありません。それはCRANへの一般公開を意図しており、したがって、彼らのチェックに従うべきです。しかし、私は私がしたい、特にR.
に
パッケージの 'DESCRIPTION'ファイルに、必要な依存関係を持つ' SystemRequirements'セクションを指定することができます。システムにそれがあるかどうかをテストするconfigureスクリプトを書くべきです。しかし、「システム」と呼ぶのは良い習慣だとは思わない。外部ライブラリに依存している場合は、Rから直接呼び出すことができるように、よりクリーンな方法でラップする必要があります。 – nicola
スポットがあります。そして、我々が必要とする(そして提供する)ツールの存在を保証する 'x13バイナリ'で何をするのか。 –
@nicolaもしあなたが外部の図書館に頼っているのであれば、Rから直接呼び出すことができるように、外部の図書館に頼っているなら、それを包むことがよりクリーンな方法でなければなりません。 ... 'system()'を呼び出さずに、既存のライブラリのコードを(Rライブラリではないと仮定して)どのようにラップするのですか? – warship