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
Antwort
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.
Oh ... und falls es nicht offensichtlich war, die # .First –
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.
un-kommentieren Ich unterstütze diese Nachricht stark. –
- 1. So laden Sie Apps automatisch
- 2. So laden Sie automatisch eine CSS-Datei in HTML
- 3. So laden Sie Modal
- 4. So aktivieren Sie automatisch eine Schaltfläche
- 5. So laden Sie Untertitel automatisch durch Abspielen von Video
- 6. So erstellen Sie eine Funktion
- 7. Wie laden Sie automatisch eine Datei in Javascript herunter?
- 8. So laden Sie eine Webseite in PHP
- 9. So laden Sie eine Webseite mit WPF
- 10. So laden Sie eine Binärdatei mit URLConnection
- 11. So laden Sie eine GESAMTE Webseite vorab
- 12. So laden Sie eine Datei mit curl
- 13. So laden Sie eine temporäre Datei herunter
- 14. Javascript So senden Sie automatisch
- 15. So wählen Sie eine Suche automatisch mit select2 aus
- 16. So laden Sie FrameworkElement
- 17. UI-Router So laden Sie eine verschachtelte Ansicht automatisch als Standard in die übergeordnete Ansicht
- 18. So löschen Sie Testergebnisse automatisch
- 19. Können Sie automatisch Benutzerinformationen in kivy laden
- 20. So rufen Sie JavaScript-Funktion auf AMX-Seite laden?
- 21. So laden Sie eine Datei mit einem anderen Dateinamen
- 22. AngularJS Laden Sie mehr Funktion
- 23. So laden Sie eine Multimethode in Clojure REPL
- 24. So laden Sie eine Webseite mit einem Klick in Javascript aber nach dem Laden einer Funktion laden
- 25. So laden Sie "index.js" in webpack2
- 26. So laden Sie Verzeichnisdaten in den Hive
- 27. So erstellen Sie eine AJAX-Anfrage beim Laden der Seite
- 28. So laden Sie eine PDF-Datei in eine glänzende App
- 29. So identifizieren Sie eine anonyme Funktion
- 30. So rufen Sie eine Funktion mehrmals auf?
verwenden Sie source()? source() lädt die Funktion, sofern der Pfad korrekt ist –
und was meinst du, indem du sie jedes Mal neu erstellst? –
http://www.statmethods.net/interface/customizing.html – Roland