16

これまでに質問されたことがある場合は申し訳ありませんが、答えが見つかりません。

Rで小さな関数を書いたとしましょう

add2<-function(a){
return(a+2)
}

ホームディレクトリ(または任意のディレクトリ)にadd2.Rとして保存します。Rにそれを見つけさせるにはどうすればよいですか?

> add2(4)
Error: could not find function "add2"

スクリプトを開いて、コンソールにコピーして貼り付け、実行すると、機能することはわかっています。しかし、どうすればそれを組み込むことができるので、Rを開いたり閉じたりしても、コピーして貼り付けなくても実行されますか?

4

3 に答える 3

20

1つの軽量オプション:

dump("add2", file="myFunction.R")

## Then in a subsequent R session
source("myFunction.R")

別の方法:

save("add2", file="myFunction.Rdata")

## Then just double click on "myFunction.Rdata" to open  
## an R session with add2() already in it 

## You can also import the function to any other R session with
load("myFunction.Rdata")

関数を独自のプライベートパッケージにパッケージ化する準備ができるまで、それらを適切に整理された準備ができたsource()テキストファイル(上記の最初の例のように)に保存することがおそらく最良の戦略です。経験豊富なuseRがこのアプローチをどのように実践したかの例については、この非常に賛成のSOの質問を参照してください。

于 2013-01-18T16:40:17.030 に答える
4

関数を呼び出す前に(たとえば、スクリプトの先頭で)、sourceユーザー定義の関数を含むファイルを作成する必要があります。

source("add2.R") # this executes add2.R script loading add2 function

基本的に、source関数は引数として渡されたスクリプトに含まれるコードを実行します。したがって、ファイルに関数定義のみが含まれている場合は、将来使用するために関数をメモリにロードします。

于 2013-01-18T16:38:16.580 に答える
4

自動的に起動する場合は、起動スクリプトを設定してから、上記の回答で概説されている方法の1つを使用する必要があります。

/Library/Frameworks/R.framework/Versions/2.15/Resources/etc/は、(Macの場合)Rprofile.siteの場所であり、適切に編集する必要があります。

私のバージョンは次のとおりです。

.First <- function()
{ 
    dir='~/Desktop/Infobase/R/0_init/0_init.R'
    if(file.exists(dir))
    {
    source(dir, chdir = TRUE) 
    } else {cat("startup file is not found at:",dir)}
    cat("\nWelcome at", date(), "\n")
}    

.Last <- function()
{ 
cat("\nGoodbye at ", date(), "\n")
}

1つのRスクリプトを入手した後は、このファイルを入力する必要がないことに注意してください。ソースしたファイルから必要なすべてを実行するだけです。私の場合、ファイル「0_init.R」には関数が含まれておらず、他のスクリプトのロードが含まれているだけです。さて、あなたは考えを持っています。

また、これを行う場合は、新しい環境に保存することをお勧めします。実際の環境は、実際には自分の機能には適していません(パッケージを開発している場合は、より適切に実装されます。そうしないと、多くの制御が失われます)。

「アタッチ」、「デタッチ」、「検索」などを使用します。

attach(FUN,name="af2tr")
于 2013-01-18T17:18:20.530 に答える