16 Stimmen

Programmatisch Liste der Basispakete abrufen

Wie kann ich R dazu bringen, seine standardmäßig installierten Pakete aufzulisten? Dirk gibt eine Liste HIER, aber wie kann ich R dazu bringen, mir diese Informationen mitzuteilen, also die Pakete in src/library/?

getOption("defaultPackages") kommt dem nahe, listet aber nur einige dieser Pakete auf.

28voto

Josh O'Brien Punkte 154170
rownames(installed.packages(priority="base"))
 [1] "base"      "compiler"  "datasets"  "graphics"  "grDevices" "grid"     
 [7] "methods"   "parallel"  "splines"   "stats"     "stats4"    "tcltk"    
[13] "tools"     "utils"

3voto

polkas Punkte 2440

TL;DR.

  • rownames(installed.packages(priority = "base")) enthält alle Basispakete für Ihre R.Version().
  • c(getOption("defaultPackages"), "base") ist das, was R beim Start lädt

installed.packages gibt Ihre derzeit installierten Pakete zurück.
Dabei sind Basispakete je nach bestimmter R-Version (R.Version()) immer gleich. Es ist möglich, dass sich diese Liste in Zukunft mit einer neueren R-Version ändert. Zum Beispiel wurde parallel später hinzugefügt als andere Existiert das R `parallel` Paket nicht auf CRAN?.

getOption("defaultPackages") wird beim Start von R geladen, obwohl das base Paket nicht mitgezählt wird.
Ich habe festgestellt, dass die Lösung sessionInfo()$basePkgs robuster für Startpakete ist, da es auch ein base Paket enthält. Allerdings ist sessionInfo()$basePkgs relativ ineffizient, da es sich um eine einfache Schleife durch alle DESCRIPTION-Dateien handelt.

microbenchmark::microbenchmark(sessionInfo()$basePkgs,
                               getOption("defaultPackages"))
Unit: nanoseconds
                         expr     min      lq       mean  median      uq      max neval
       sessionInfo()$basePkgs 6172017 6242209 6673759.42 6294546 6848292 16656578   100
 getOption("defaultPackages")     205     246     526.85     451     656     1722   100

2voto

jbaums Punkte 26505

Es könnte eine einfachere Methode geben, aber ich denke, dass dies den Trick tun sollte:

installed.packages()[grep('^base$', installed.packages()[, 'Priority']), ]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X