2016-08-08 25 views
1

Ich finde es ärgerlich, dass ich jedes Mal, wenn ich RStudio lade, auf Extras -> Pakete aktualisieren klicke. Ich könnte update.packages(c("ggplot2")) zum Beispiel verwenden, um meine Pakete in .RProfile zu aktualisieren, aber das Problem ist, dass es nicht nach anderen Paketen (Abhängigkeiten) sucht. Zum Beispiel muss ich bei jedem Start von RStudio das Paket "Seriation" und "Digest" aktualisieren, und diese Pakete werden beim Start nicht von mir geladen. Hat jemand Code, um alle Pakete beim Start automatisch zu überprüfen und zu aktualisieren? Wenn ja, kannst du es bitte hier teilen? Ich habe dieses Thema ausgiebig gegoogelt und SO durchsucht, und es scheint, dass die gängige Meinung ist, RStudios Menü zu verwenden. Hier ist der Thread Ich beziehe mich auf: How to update R2jags in R?Paket beim Start automatisch aktualisieren

Eine Möglichkeit, die ich denken kann, dies zu tun in .RProfile ist:

a<-installed.packages() 
b<-data.frame(a[,1]) 

und dann Aufruf dieser Funktion: https://gist.github.com/stevenworthington/3178163

Ich bin aber nicht ganz sicher, ob dies die optimale Methode ist.

anderen verbunden Threads: Load package at start-up

I den Faden oben erstellt. Ich würde mich über irgendwelche Gedanken freuen.

+1

Dies ist eine schlechte Idee. Sie werden feststellen, dass Sie, wenn Sie erst kurz vor einem wichtigen Meeting ein Ergebnis erstellen und ausdrucken müssen, nur ein Paketupdate Ihren Code bricht. – Roland

+0

Ich verstehe. Toller Gedanke Roland! Ich bin neu bei R (und habe von STATA gewechselt) - ich programmiere jetzt nur noch etwa 10 Tage. Denkst du, dass solche Probleme sehr häufig sind? – watchtower

Antwort

1

Ich fand dies im Internet (erinnere mich nicht wo), als ich mit dem gleichen Problem kämpfte, obwohl Sie noch dieses Programm ausführen müssen. Hoffe das hilft .

all.packages <- installed.packages() 
r.version <- paste(version[['major']], '.', version[['minor']], sep = '') 

for (i in 1:nrow(all.packages)) 
{ 
    package.name <- all.packages[i, 1] 
    package.version <- all.packages[i, 3] 
    if (package.version != r.version) 
    { 
    print(paste('Installing', package.name)) 
    install.packages(package.name) 
    } 
}