2016-11-15 8 views
1

Rでいくつかの関数を作成しましたが、それらの関数が必要なときはいつでも、再作成する必要があります。方法と手順を提案して、Rの任意のセッションでこれらの関数を再作成せずに直接使用できるようにしてください。関数を自動的にロードする方法

+0

source()を使用していますか? source()は、パスが正しい場合には関数をロードします –

+0

そして毎回それらを再作成することはどういう意味ですか? –

+0

http://www.statmethods.net/interface/customizing.html – Roland

答えて

0

私はすべてのセッションで必要な一連の機能を持っています。そのトリックは、それらをあなたの.Firstファイルに追加して、それらが世界中のすべてのセッションに供給されるようにすることです。

find.first <- function(edit = FALSE, show_lib = TRUE){ 

    candidates <- c(Sys.getenv("R_PROFILE"), 
        file.path(Sys.getenv("R_HOME"), "etc", "Rprofile.site"), 
        Sys.getenv("R_PROFILE_USER"), 
        file.path(getwd(), ".Rprofile") 
       ) 

    first_hit <- Filter(file.exists, candidates) 

    if(show_lib & !edit){ 
    return(first_hit) 
    }else { 
    file.edit(first_hit) 
    } 
} 

あなたはどこにでも使うスクリプトを言って、あなたの最初のファイルを見つけるため

ヘルパー関数は、あなたがこのようなものが表示されます

# Pop open the first Rprofile file. 
find.first(edit = TRUE) 

'/のMyStuff/R' であります

##Emacs please make this -*- R -*- 
## empty Rprofile.site for R on Debian 
## 
## Copyright (C) 2008 Dirk Eddelbuettel and GPL'ed 
## 
## see help(Startup) for documentation on ~/.Rprofile and Rprofile.site 

# ## Example of .Rprofile 
# options(width=65, digits=5) 
# options(show.signif.stars=FALSE) 
# setHook(packageEvent("grDevices", "onLoad"), 
#   function(...) grDevices::ps.options(horizontal=FALSE)) 
# set.seed(1234) 
#.First <- function(){} 
# 
# 

この機能を次のように編集します。

.First <- function(){ 
    all_my_r <- list.files('/mystuff/R', full.names = T, 
         recursive = T, pattern = ".R$") 
    lapply(all_my_r, function(i){ 
    tryCatch(source(i), error = function(e)NULL) 
    }) 

} 

ファイルを保存します。その後、セッションを再開します。

+0

ああ...明白ではなかった場合には#.First –

3

Carlの答えは受け入れられますが、私は個人的にはこれがまさにあなたの関数をパッケージ化し、単純にライブラリとして呼び出すべきだと思っています。

はこれを行うには非常に良い理由があります:(!重点を置いて)

  • ドキュメントを
  • 簡単な取り付け(library(mypackage)
  • 簡単に共有するためのテストや携帯全体のシステム
  • レポート内で使いやすい(Rmd/knitr)
  • 重複の可能性を減らす
  • Rパッケージシステムの学習は、ツールボックスの強力な部分となり、コードを適切に整理することの他の利点が明らかになります。
+0

私はこのメッセージを強く支持します。 –

関連する問題