Nie rozumiem punktu funkcji First w R. Moja przyczyna to jakikolwiek kod w .Rprofile będzie pozyskiwany i wykonywany, gdy R uruchomi się mimo to.Pierwsza funkcja w R
to
.First<-function(){
library('devtools')
}
i to
library('devtools')
w .Rprofile mają dokładnie ten sam efekt.
Jednak tutaj jest przykładem, który pokazuje .First może zrobić różnicę:
przykład 1, można zobaczyć X11.options() $ typ poprawnie staje Xlib jak określono w .Rprofile
>> cat .Rprofile
.First <- function() {
library(devtools)
}
setHook(
packageEvent("grDevices", "onLoad"),
function(...) grDevices::X11.options(type="Xlib")
)
>> Rscript -e 'X11.options()$type'
[1] "Xlib"
przykład 2, można zobaczyć X11.options() $ typ jest nadal Kairze setHook w .Rprofile nie miała wpływu
>> cat .Rprofile
library(devtools)
setHook(
packageEvent("grDevices", "onLoad"),
function(...) grDevices::X11.options(type="Xlib")
)
>> Rscript -e 'X11.options()$type'
[1] "cairo"
- w jakim przypadku d o Absolutnie muszę używać funkcji .First?
- dlaczego .First wprowadził różnicę w powyższym przykładzie?
Dzięki!
Możesz zapisać '.First' funkcję w' .RData' Chyba. R najpierw ładuje plik '.Renviron', następnie' .Rprofile', a następnie plik '.RData'. Więc jeśli zapiszesz funkcję '.First' w' .RData', możesz zdefiniować inną funkcję '.First' dla każdego projektu. Myślę, że powinien to być cel funkcji '.First'. –
@Narendra. OK, jestem przekonany. Dlaczego nie uczynić z tego odpowiedzi? –
@Narendra Mniej lub więcej pliku pomocy: * Funkcja. Początek (i .Last) mogą być zdefiniowane w odpowiednich plikach ".Rprofile" lub "Rprofile.site" lub zapisane w ".RData". * –