2013-07-05 13 views
8

Das könnte einfach sein, aber ich bin immer noch frustriert, also würde ich mich über eine kurze Erklärung freuen. Ich habe ausgiebig nach einer richtigen Antwort gesucht, kann aber keine finden.Unterschied zwischen .Rprofile und .First

Da meine .Rprofile alle Befehle enthält, die ich jedes Mal ausführen muss, wenn ich Rstudio (oder R im Allgemeinen) öffne, warum habe ich dann die Option .First() innerhalb des .Rprofile definiert? Was ist eigentlich der Zweck von .First()?

ein Beispiel zu geben, nehme an, dass meine .Rprofile die folgenden Zeilen hat:

.First <- function(){ 
    library(xts) 
    cat("\nWelcome at", date(), "\n") 
} 

Wie anders ist die oben aus einfach in meinem .Rprofile die Zeilen mit:

library(xts) 
cat("\nWelcome at", date(), "\n") 

Ich habe versuchten beide und sie haben das gleiche Ergebnis.

Danke!

Antwort

12

Der Hauptunterschied besteht darin, dass .Firstausgeführt wird, nachdem die Standard-Arbeitsbereich Bild .Rdata (falls vorhanden) geladen ist, und hat so den Zugriff auf Objekte in diesem Arbeitsbereich.

Zum Beispiel wollen wir ein Objekt erstellen, die beim Start automatisch geladen wird:

x <- 2 
save.image() 

R Beenden und ein .RProfile in Ihrem Standard-Arbeitsverzeichnis erstellen enthält:

y <- try(print(x)) 
print(y) 
.First <- function() 
{ 
    print(x) 
    invisible(NULL) 
} 

Der erste Versuch zu drucken x sollte fehlschlagen, aber die zweite sollte erfolgreich sein.

+0

Ausgezeichnet. Danke vielmals! –

+0

Man muss beachten, dass dieses Verhalten sehr problematisch sein kann, da **. Beim Löschen des Arbeitsbereichs die vorherige Version der Funktion potenziell gelöscht wird. Man sollte den Arbeitsbereich speziell neu laden, .Fisrt entfernen und die Sitzung neu starten (mit dem Speichern des Arbeitsbereichs) –

Verwandte Themen