2015-05-06 20 views
8

Bazı kodları, bir istemci için çalıştırmak için gerekli dosyaları oluşturabileceğim kadar iyi anlamaya çalışıyorum. Ben buna bir döngü içinde bir kütüphane yükler garipsiyordu:Neden R komut dosyasında bir kitaplık birden çok kez yüklenebilir?

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

    # About 80 lines of code 

} 

birisi aynı kütüphane birden çok kez yeniden isteyeceği herhangi muhtemel bir nedeni var mı? Kütüphaneler, fonksiyonlar sağlamanın yanında hiçbir şey yapmadıklarını düşündüm.

"library" ve "load" anahtar sözcükleri için limma user guide numaralı telefonu aradım ve belirgin bir şey bulamadım.

Döngünün ilk çizgisi olmasaydı neredeyse bunun bir kaza olduğunu düşünürdüm.

+2

Bu kötü programlama stili gibi görünüyor. Döngünün dışına taşınma kodu bozuyor mu? – akhmed

+1

Bence gerekli değil. – joran

+2

Düşünebildiğim tek bağlam, bir kütüphanenin büyük miktarda bellek alması ve döngü boyunca kısmen boşaltılmasıdır. Yine de, birisi böyle bir şekilde büyük bir kütüphaneyi yüklemesi gerekiyorsa, bir sorun olduğunu düşünüyorum. –

cevap

10

Bu bir hatadır. library aramayı library(limma, verbose=TRUE) olarak değiştirin ve yalnızca ilk aramanın aslında bir şey yaptığını göreceksiniz (görünmez şekilde döndürülür, ancak atandığı için kullanmıyorlar). Örneğin

:

> 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" 
İlgili konular