2012-11-25 6 views
57

abc.Rファイルで定義された関数を別のファイル、たとえばxyz.Rで呼び出すにはどうすればよいですか?すべての関数を1つの.Rファイルで定義し、別の.Rファイルから呼び出します。どうすれば可能ですか?

補足的な質問は、Rプロンプト/コマンドラインからabc.Rで定義された関数をどのように呼び出すのですか?

+4

。もっと真剣に 'ソース'を見てください – Dason

答えて

88

あなたはこれらのファイルの両方があなたの現在の作業ディレクトリにあると仮定(source("xyz.R")続いsource("abc.R")を呼び出すことができます

をabc.Rがある場合:。

fooABC <- function(x) { 
    k <- x+1 
    return(k) 
} 

とxyz.Rは次のとおりです。

fooXYZ <- function(x) { 
    k <- fooABC(x)+1 
    return(k) 
} 

これは動作します:

周期的な依存関係があっても動作します。

など。

fooABC <- function(x) { 
    k <- barXYZ(x)+1 
    return(k) 
} 

barABC <- function(x){ 
    k <- x+30 
    return(k) 
} 

とxyz.Rはこれです::abc.Rが、この場合には、これらの機能を使用することにより、その後

fooXYZ <- function(x) { 
    k <- fooABC(x)+1 
    return(k) 
} 

barXYZ <- function(x){ 
    k <- barABC(x)+20 
    return(k) 
} 

> source("abc.R") 
> source("xyz.R") 
> fooXYZ(3) 
[1] 55 
> 
+7

ニュアンス:ファイル/関数を 'ソース'する必要があります。それはあなたのワークスペースにあり、あなたはいつでもそれを使うことができます。あなたがそれを変更した場合は、それを元に戻す必要があります。コードを変換してから機能が大きく変化している場合は、それらをすべて1つのファイルに入れて、毎回全部をソースにしてください。また、より大規模な関数を収集し、2.テストケースを実行する、小さなファイルを別々に作成することもできます。 Rには、ワークフローを整理する方法がたくさんあります。 –

+4

ニュアンスありがとう、ブライアン。私はこれを2つのシナリオとして示しました。手続き型言語のほとんどの人が不思議に思うかもしれません。これは、循環依存性を追加するためにファイルが編集された場合と同様です。この場合、リソースは(図のように)リソースする必要があります。サイクルはファイルのソースに影響しません。 –

+0

ありがとうございます。 @A_K:循環依存関係の問題を強調してくれてありがとう。私は「改善できる」Rドキュメントを掘り下げて何時間も節約できました:) –