Chỉ để hoàn thiện, có một số cách để ngăn bạn gặp vấn đề này. Như Dirk đã nói, hãy lưu các gói của bạn vào một thư mục khác trên máy tính của bạn.
install.packages("thepackage",lib="/path/to/directory/with/libraries")
Bạn có thể thay đổi mặc định .Library
giá trị sử dụng chức năng .libPaths
quá
.libPaths("/path/to/directory/with/libraries")
Điều này sẽ đặt đường dẫn này làm giá trị đầu tiên trong .Library
biến và sẽ biến nó thành mặc định.
Nếu bạn muốn tự động hóa điều này hơn nữa, bạn có thể chỉ định điều này trong tệp Rprofile.site, mà bạn tìm thấy trong thư mục / etc / của bản dựng R của bạn. Sau đó, nó sẽ tự động tải mỗi lần R tải, và bạn không phải lo lắng về điều đó nữa. Bạn chỉ có thể cài đặt và tải các gói từ thư mục được chỉ định.
Cuối cùng, tôi có một số mã nhỏ được bao gồm trong Rprofile.site cho phép tôi cài đặt lại tất cả các gói khi tôi cài đặt phiên bản R mới. Bạn chỉ cần liệt kê chúng trước khi cập nhật lên phiên bản R mới. Tôi làm điều đó bằng cách sử dụng tệp .RData chứa danh sách được cập nhật với tất cả các gói.
library(utils)
## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
install.packages(pkgs[!installed])
}
Tôi tạo packagelist.RData bằng cách chỉ định .Last()
trong Rprofile.site của tôi. Điều này cập nhật danh sách gói nếu tôi cài đặt một số:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
Khi tôi cài đặt phiên bản R mới, tôi chỉ cần thêm các yếu tố cần thiết vào tệp Rprofile.site và tất cả các gói được cài đặt lại. Tôi phải điều chỉnh Rprofile.site bằng mọi cách (sử dụng độ tương phản tổng, thêm mã bổ sung cho Tinn-R, những thứ này), vì vậy nó không thực sự là công việc phụ. Nó chỉ mất thêm thời gian để cài đặt tất cả các gói một lần nữa.
Bit cuối cùng này tương đương với những gì được đưa ra trong câu hỏi ban đầu như là một giải pháp. Tôi không cần phải lo lắng về việc nhận danh sách "đã cài đặt" trước.
Một lần nữa, điều này không hoạt động hoàn hảo nếu bạn có các gói không được cài đặt từ CRAN. Nhưng mã này có thể dễ dàng mở rộng để bao gồm cả những người quá.