2015-05-06 12 views
8

Tôi đang cố gắng hiểu một số mã cũng đủ để tôi có thể tạo các tệp cần thiết để làm cho nó chạy nó cho một khách hàng. Tôi nghĩ thật lạ khi tải một thư viện trong vòng lặp:Tại sao có thể tải một thư viện nhiều hơn một lần trong tập lệnh R?

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

    # About 80 lines of code 

} 

Có lý do nào khiến ai đó muốn tải lại cùng một thư viện nhiều lần không? Tôi nghĩ rằng các thư viện không được làm bất cứ điều gì ngoài chức năng cung cấp.

Tôi đã tìm kiếm limma user guide cho từ khóa "thư viện" và "tải" và không tìm thấy bất kỳ điều gì hiển nhiên.

Tôi gần như nghĩ rằng đây là một tai nạn nếu nó không phải là dòng đầu tiên trong vòng lặp.

+2

này trông giống như phong cách lập trình xấu. Di chuyển nó ra khỏi vòng lặp phá vỡ mã? – akhmed

+1

Theo tôi, không cần thiết. – joran

+2

Ngữ cảnh duy nhất tôi có thể nghĩ là nếu một thư viện chiếm một lượng lớn bộ nhớ và đã được dỡ xuống một phần trong vòng lặp. Tôi nghĩ rằng có một vấn đề nếu ai đó cần phải tải một thư viện toàn bộ lớn theo cách như vậy, mặc dù. –

Trả lời

10

Đó là một sai lầm. Thay đổi cuộc gọi library thành library(limma, verbose=TRUE) và bạn sẽ chỉ thấy cuộc gọi đầu tiên thực sự làm bất cứ điều gì (một cái gì đó được trả lại vô hình, nhưng họ không sử dụng nó vì nó không được gán).

Ví dụ:

> 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" 
Các vấn đề liên quan