2015-05-06 16 views
8

Sto cercando di capire un po 'di codice abbastanza bene da poter creare i file necessari per farlo funzionare per un client. Ho pensato che fosse strano che si carica una libreria all'interno di un ciclo:Perché si può caricare una libreria più di una volta in uno script R?

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

    # About 80 lines of code 

} 

C'è qualche ragione probabile che qualcuno vorrebbe ricaricare la stessa libreria più volte? Pensavo che le librerie non facessero do oltre a fornire funzioni.

Ho cercato il limma user guide per le parole chiave "libreria" e "carico" e non ho trovato nulla di ovvio.

Mi piacerebbe quasi pensare che questo sia stato un incidente se non fosse la prima riga del ciclo.

+2

Questo fa apparire come un cattivo stile di programmazione. Lo spostamento fuori dal ciclo interrompe il codice? – akhmed

+1

Secondo me non è necessario. – joran

+2

L'unico contesto che posso pensare è se una libreria occupasse una grande quantità di memoria e fosse stata scaricata a metà del ciclo. Penso che ci sia un problema se qualcuno ha bisogno di caricare un'intera libreria così grande in questo modo, però. –

risposta

10

È un errore. Cambia la chiamata library allo library(limma, verbose=TRUE) e vedrai che solo la prima chiamata esegue effettivamente qualcosa (qualcosa viene restituito in modo invisibile, ma non lo stanno utilizzando perché non è stato assegnato).

Ad esempio:

> 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" 
Problemi correlati