2010-10-19 26 views
45

Tôi vừa mới cài đặt R-2.12.0 từ R-2.11.1 và tôi đã cập nhật tất cả các gói cran qua:Tự động cập nhật các gói cài đặt từ R-giả mạo

update.packages(checkBuilt=TRUE, ask=FALSE) 

Bây giờ tôi muốn cập nhật tất cả các gói Tôi đã cài đặt từ R-giả mạo, nhưng chỉ nếu chúng không có sẵn trên CRAN. Nói cách khác, tôi không thể chỉ đơn giản là chạy:

update.packages(checkBuilt=TRUE, ask=FALSE, repos="http://r-forge.r-project.org") 

bởi vì nó sẽ cài đặt phiên bản R-rèn của gói survival so với phiên bản đi kèm với R-2.12.0.

Tôi có thể sử dụng kết hợp thông tin từ old.packagespackageStatus để xác định gói nào chỉ tồn tại trên R-giả mạo, nhưng tôi muốn hỏi xem có cách nào dễ dàng hơn trước khi xây dựng giải pháp tùy chỉnh hay không.

Trả lời

47

Làm thế nào về điều này:

# 1. Get the list of packages you have installed, 
# use priority to exclude base and recommended packages. 
# that may have been distributed with R. 
pkgList <- installed.packages(priority='NA')[,'Package'] 

# 2. Find out which packages are on CRAN and R-Forge. Because 
# of R-Forge build capacity is currently limiting the number of 
# binaries available, it is queried for source packages only. 
CRANpkgs <- available.packages(
    contriburl=contrib.url('http://cran.r-project.org'))[,'Package'] 
forgePkgs <- available.packages(
    contriburl=contrib.url('http://r-forge.r-project.org', type='source') 
)[,'Package'] 

# 3. Calculate the set of packages which are installed on your machine, 
# not on CRAN but also present on R-Force. 
pkgsToUp <- intersect(setdiff(pkgList, CRANpkgs), forgePkgs) 

# 4. Update the packages, using oldPkgs to restrict the list considered. 
update.packages(checkBuilt=TRUE, ask=FALSE, 
    repos="http://r-forge.r-project.org", 
    oldPkgs=pkgsToUp) 

# 5. Profit? 
+0

Trên Mac loại sử dụng = "nguồn" trong bước cuối cùng: ví dụ: update.packages (checkBuilt = TRUE, yêu cầu = FALSE, repos = "http://r-forge.r-project.org", oldPkgs = pkgsToUp, gõ = "nguồn") – Janvb

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