2016-11-15 5 views
1

Ich habe einige Funktionen in R erstellt und wann immer ich eine dieser Funktionen brauche, muss ich das neu erstellen. Bitte schlage mir den Weg und die Schritte vor, damit ich diese Funktionen in jeder Sitzung von R direkt verwenden kann, ohne sie neu zu erstellen.So laden Sie automatisch eine Funktion

+0

verwenden Sie source()? source() lädt die Funktion, sofern der Pfad korrekt ist –

+0

und was meinst du, indem du sie jedes Mal neu erstellst? –

+0

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

Antwort

0

Ich habe eine Reihe von Funktionen, die ich über alle Sitzungen benötige. Der Trick besteht darin, sie zu Ihrer .First-Datei hinzuzufügen, damit sie global in jede Sitzung übernommen werden.

Eine Hilfsfunktion Ihre erste Datei

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) 
    } 
} 

Sagen Sie Ihre Skripte, die Sie überall in '/ mystuff/R' verwenden, um finden

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

werden Sie etwas sehen:

##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(){} 
# 
# 

Bearbeiten Sie die Funktion in etwa wie folgt:

.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) 
    }) 

} 

Speichern Sie die Datei. Dann starte die Sitzung neu.

+0

Oh ... und falls es nicht offensichtlich war, die # .First –

3

Während Carls Antwort akzeptabel ist, denke ich persönlich, dass dies genau die Situation ist, in der Sie Ihre Funktionen packen und sie einfach als Bibliothek bezeichnen sollten.

Es gibt sehr gute Gründe, dies zu tun: (! Mit Schwerpunkt)

  • Dokumentation
  • Tests
  • Einfache Beladung (library(mypackage))
  • Leicht und tragbar für Systeme zu teilen
  • Einfach im Bericht zu verwenden (Rmd/knitr)
  • Reduziert das Potenzial für die Duplizierung
  • Das Erlernen des R-Paketsystems wird ein wichtiger Bestandteil Ihrer Toolbox sein, und andere Vorteile der richtigen Organisation Ihres Codes werden offensichtlich.
+0

un-kommentieren Ich unterstütze diese Nachricht stark. –

Verwandte Themen