2013-07-17 36 views
34

Tôi có một số mã mà tôi chạy trong đó bao gồm phần này:lỗi Package khi chạy mã r trên dòng lệnh

if (!require("yaml")) { 
    install.packages("yaml") 
    library("yaml") 
} 

Khi tôi chạy trong nó rstudio, tất cả mọi thứ chạy trơn tru và không có lỗi. Tuy nhiên, khi tôi cố gắng chạy mã của tôi trên dòng lệnh, tôi nhận được lỗi này:

$ Rscript.exe file.R 
Loading required package: yaml 
Installing package(s) into ‘/usr/lib/R/site-library’ 
(as ‘lib’ is unspecified) 
Error in contrib.url(repos, type) : 
    trying to use CRAN without setting a mirror 
Calls: install.packages -> grep -> contrib.url 
In addition: Warning message: 
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : 
    there is no package called ‘yaml’ 
Execution halted 
+2

Đọc điều này: 'cố gắng sử dụng CRAN mà không đặt đối số mirror' và đặc biệt là' repos' trong 'install.packages'. –

Trả lời

51

RStudio đặt một kho lưu trữ mặc định khi bạn gọi install.packages từ bên trong RStudio. Khi bạn chạy tập lệnh thông qua dòng lệnh, bạn phải thông báo cho R sử dụng kho lưu trữ nào (hoặc thiết lập một kho lưu trữ mặc định toàn cầu).

Bạn có thể dễ dàng khắc phục vấn đề này bằng cách yêu cầu R sử dụng kho lưu trữ yêu thích của bạn.

Ví dụ: nếu bạn muốn sử dụng kho lưu trữ gói của RStudio, hãy đặt repos="http://cran.rstudio.com/" trong cuộc gọi install.packages.

if (!require("yaml")) { 
    install.packages("yaml", repos="http://cran.rstudio.com/") 
    library("yaml") 
} 

Điều này sẽ hiệu quả!

+0

Điều này sau đó cho tôi lỗi: Đang tải gói yêu cầu: yaml Lỗi trong tệp (con, "r"): không thể mở kết nối Thực hiện tạm dừng – kng

+0

Bạn có biết gói có được cài đặt hay không? Bạn có mã khác trong tập lệnh của mình không? Bạn đã thử thực hiện một kịch bản thử nghiệm, nói 'test.R' chỉ với dòng' library ("yaml") 'để xem liệu gói có đang được tải chính xác không? – ialm

+0

Vì lý do nào đó tôi nghĩ rằng lỗi có liên quan đến cùng một vấn đề. Nó chỉ ra tôi đã sử dụng một wrapper cảnh báo suppress trước đó đã được ẩn các vấn đề thực sự. – kng