2012-02-28 15 views
2

私が書いた関数を含むいくつかのRファイルがあります。私はそれらのファイルを利用して機能を利用できるようにしています。 fooは私の関数であり、私が入力した場合:Rの編集機能と変更(matlab形式)を保存しますか?

foo <- edit(foo)

または

fix(foo)

を私は機能を変更し、ちょうどこのセッションのためにそれを保存することができます。変更を永久に、つまりソースファイルに保存するにはどうすればよいですか?これまで私はソースファイルを探していて、それを編集して、それをリソース化していましたが、時には迷惑になることがあります。私はMatlabで "編集(関数)"が関数のソースファイルに変更を保存することを見てきました。

おかげ

+0

興味深いことに、あなたがそのような機能を開発できるということは決してありませんでした。私の経験上、有能なIDEはこの作業にはかなり便利です。私は複数の.Rファイルを開いていて、それらを修正/保存/ソースします。 –

+0

これは私がほとんどの時間同様にやっている方法です。しかし、私はセッションの開始時にいくつかの機能ファイルを用意しています - 私は定期的に必要な機能です。場合によっては、これらのファイルに編集したい機能が含まれているかどうかわからないので、これらのファイルを検索します。このような場合、この関数を編集(関数)のような呼び出しで永続的に編集するには、Matlabのような機能を持たせるのがよいでしょう。 –

答えて

3

私はそれはあなたがでRを実行しているものをGUI(したがって、どのようなOS)に依存だと思うが。個人的に、私はOSXでR.appに満足だけど、R-プラグインは、多くのためにそこにありますTextWranglerやSciteなどの一般的なエディター。 IIRCこれらのプラグインを使用すると、エディタから「source」コマンドを実行できるので、編集内容を保存するとR-console環境の関数のバージョンも更新されます。

+0

私はvimとvim-r-pluginの組み合わせをUbuntu LinuxとMacOS Xで使用しています。しかし、ソースの正確なファイル名が分からないと、関数のソースファイルをどのように読み込むことができますか?シェル(bash)にはコマンド 'which commandname'があります。これはコマンドへのパスを与えます。/usr/bin/bashに 'which bash'と入力します。 Rの中にsimmilarはないので、 'edit( 'foo')'と入力してソースファイルを開きますか? –

2

関数オブジェクトを保存することはできますか?その場合は、編集した機能でsave()を使用し、それを戻すにはload()を使用してください。 @CarlWitthoftが言うように、それはあなたが多くのGUIのいずれかを使用したほうが良いかもしれません、難しいか、再度

> foo <- function(x) 1:10 
> writeLines("foo.txt", foo) 
> writeLines(deparse(foo), "foo.txt") 
> readLines("foo.txt") 
[1] "function (x) " "1:10" ## not what is wanted 

それらを逆パースする痛みになるようedit()fix()は、解析されたRのオブジェクトではなく、元のファイルを操作していますR. RStudioで利用可能なIDEは非常に普及しており、ユーザーフレンドリーであり、Emacs + ESSは難しいです。

+0

'keep.source'が無効にされていない限り、関数は一般にソースを' 'source''属性に持つことに注意してください。私は、MATLABが結果をシリアライズする方が簡単だと思いますが、ファイルと関数の間に1-1の対応があることを思い出してください。 – Charles

+0

@Charlesですが、 'edit()'と 'fix()'ツールを使ってR内の関数定義を変更した場合でも、新しい関数オブジェクトからソースコード(テキスト)に移動する必要があります。 IIRCでは、OPで提案された方法でRの関数を編集しても、 'source'属性は更新されません。 –

+1

'source'属性は更新されます(2.12でチェックされています)。 – Charles