2015-05-06 5 views
8

Ich versuche, Code gut genug zu verstehen, dass ich die notwendigen Dateien erstellen kann, damit es für einen Client ausgeführt wird. Ich dachte, es war seltsam, dass es eine Bibliothek in einer Schleife lädt:Warum könnte man eine Bibliothek mehr als einmal in einem R-Skript laden?

for (i in 1:length(ids)){ 
    library(limma) 

    # About 80 lines of code 

} 

Gibt es einen Grund wahrscheinlich, dass jemand die gleiche Bibliothek mehrmals neu zu laden möchte? Ich dachte, dass Bibliotheken nicht tun alles andere als Funktionen zur Verfügung stellen.

Ich suchte die limma user guide für die Schlüsselwörter "Bibliothek" und "laden" und fand nichts offensichtliches.

würde ich fast glaube, das ein Unfall war, wenn es nicht die erste Zeile in der Schleife ist.

+2

Das sieht wie schlechter Programmierstil. Wird der Code durch das Verschieben aus der Schleife unterbrochen? – akhmed

+1

Meiner Meinung nach ist es nicht notwendig. – joran

+2

Der einzige Kontext, den ich mir vorstellen kann, ist, wenn eine Bibliothek eine große Menge an Speicher belegt und während der Schleife entladen wird. Ich denke, es gibt ein Problem, wenn jemand eine ganze Bibliothek, die so groß ist, laden muss. –

Antwort

10

Es ist ein Fehler. Ändern Sie den library Anruf zu library(limma, verbose=TRUE) und Sie werden sehen, dass nur der erste Aufruf tatsächlich irgendetwas (unsichtbar zurückgegeben wird, aber sie verwenden es nicht, da es nicht zugewiesen wird) tatsächlich tut.

Zum Beispiel:

> pkgs <- library(base, verbose=TRUE) 
Warning message: 
In library(base, verbose = TRUE) : 
    package ‘base’ already present in search() 
> pkgs 
# [1] "stats"  "graphics" "grDevices" "utils"  "datasets" 
# [6] "setwidth" "colorout" "methods" "base"