2010-06-07 34 views
37

Để có thể so sánh hai phiên bản của một gói, tôi cần phải chọn phiên bản của gói mà tôi tải. Hệ thống gói của R được đặt theo mặc định để ghi đè các gói hiện có, để bạn luôn có phiên bản mới nhất. Làm cách nào để ghi đè hành vi này?Làm thế nào để bạn sử dụng nhiều phiên bản của cùng một gói R?

những suy nghĩ của tôi cho đến nay là:

tôi có thể nhận được các nguồn gói, chỉnh sửa các mô tả cho tên gọi khác nhau và xây dựng, có hiệu lực, hai gói khác nhau. Tôi muốn có thể làm việc trực tiếp với các tập tin nhị phân mặc dù, vì nó là ít rắc rối hơn nhiều.

Tôi không nhất thiết phải có cả hai phiên bản của các gói được tải cùng một lúc (chỉ cần cài đặt ở đâu đó cùng một lúc). Tôi có thể gây rối với Sys.getenv('R_HOME') để thay đổi nơi R cài đặt các gói và sau đó .libpaths() để thay đổi địa điểm mà R tìm kiếm chúng. Điều này có vẻ hacky mặc dù, do đó, không ai có bất kỳ ý tưởng tốt hơn?

+2

Để được trợ giúp đối với 'update.packages', đối số được đề cập là' installWithVers'. Bạn có thể thử kiểm tra nó (hoặc tôi sẽ kiểm tra sau và đăng bài như một câu trả lời;)). – Marek

+0

Và chuỗi này có thể hữu ích https://stat.ethz.ch/pipermail/r-help/2008-February/153580.html – Marek

+2

@Marek: Theo tệp tin NEWS, các lượt cài đặt được phiên bản không còn được dùng trong R2.9.0 nữa. http://cran.r-project.org/src/base/NEWS –

Trả lời

33

Bạn có thể thay đổi có chọn lọc đường dẫn thư viện. Đối với tính minh bạch đầy đủ, giữ cho cả hai ra khỏi con đường thông thường của bạn và sau đó làm

library(foo, lib.loc="~/dev/foo/v1") ## loads v1 

library(foo, lib.loc="~/dev/foo/v2") ## loads v2 

Các công trình tương tự cho install.packages(), tất nhiên. Tất cả các lệnh này có một số đối số, vì vậy các móc bạn nhắm đến có thể đã có mặt. Vì vậy, không nhìn vào việc thay đổi R_HOME, thay vì nhìn vào help(install.packages) (giả sử bạn cài đặt từ nguồn).

Nhưng AFAIK bạn không thể tải cùng một gói hai lần dưới cùng một tên.

+0

Và để cài đặt, bạn có thể thực hiện nếu cần thiết 'lb = .libPaths(); .libPaths (c ('/ custom/path', lb)) ' – geotheory

Các vấn đề liên quan