เพื่อความสมบูรณ์มีวิธีป้องกันคุณจากปัญหานี้ ดังที่ Dirk กล่าวให้บันทึกแพ็คเกจของคุณในไดเรกทอรีอื่นบนคอมพิวเตอร์ของคุณ
install.packages("thepackage",lib="/path/to/directory/with/libraries")
คุณสามารถเปลี่ยนค่าเริ่มต้น.Library
โดยใช้ฟังก์ชั่นได้.libPaths
เช่นกัน
.libPaths("/path/to/directory/with/libraries")
สิ่งนี้จะทำให้พา ธ นี้เป็นค่าแรกใน.Library
ตัวแปรและจะทำให้เป็นค่าเริ่มต้น
หากคุณต้องการทำสิ่งนี้โดยอัตโนมัติเพิ่มเติมคุณสามารถระบุสิ่งนี้ได้ในไฟล์ Rprofile.site ซึ่งคุณพบในไดเร็กทอรี / etc / ของการสร้าง R ของคุณ จากนั้นมันจะโหลดโดยอัตโนมัติทุกครั้งที่โหลด R และคุณไม่ต้องกังวลเกี่ยวกับเรื่องนั้นอีกต่อไป คุณสามารถติดตั้งและโหลดแพ็คเกจจากไดเรกทอรีที่ระบุ
ในที่สุดฉันมีรหัสขนาดเล็กบางส่วนที่รวมอยู่ใน Rprofile.site ของฉันซึ่งช่วยให้ฉันสามารถติดตั้งแพ็คเกจทั้งหมดเมื่อฉันติดตั้งรุ่น R ใหม่ คุณเพียงแค่ต้องทำรายการพวกเขาก่อนที่คุณจะอัพเดทเป็นเวอร์ชั่น R ใหม่ ฉันทำเช่นนั้นโดยใช้ไฟล์. RData ที่มีรายการที่อัปเดตพร้อมแพ็คเกจทั้งหมด
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])
}
ฉันสร้าง packagelist.RData โดยระบุ.Last()
ใน Rprofile.site ของฉัน นี่เป็นการอัปเดตรายการแพ็คเกจหากฉันติดตั้งบางอย่าง:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
เมื่อฉันติดตั้งเวอร์ชัน R ใหม่ฉันเพิ่งเพิ่มองค์ประกอบที่จำเป็นลงในไฟล์ Rprofile.site และแพ็คเกจทั้งหมดจะถูกติดตั้งใหม่ ฉันต้องปรับ Rprofile.site อยู่ดี (ใช้ผลต่างความขัดแย้งเพิ่มรหัสพิเศษสำหรับ Tinn-R สิ่งเหล่านี้) ดังนั้นมันจึงไม่ใช่งานพิเศษจริงๆ ใช้เวลาเพิ่มในการติดตั้งแพ็กเกจทั้งหมดใหม่อีกครั้ง
บิตสุดท้ายนี้เทียบเท่ากับสิ่งที่ให้ไว้ในคำถามเดิมว่าเป็นคำตอบ ฉันไม่จำเป็นต้องกังวลเกี่ยวกับการรับรายการ "ติดตั้ง" ก่อน
อีกครั้งสิ่งนี้จะไม่ทำงานไร้ที่ติหากคุณมีแพ็คเกจที่ไม่ได้ติดตั้งจาก CRAN แต่รหัสนี้สามารถขยายได้อย่างง่ายดายเพื่อรวมสิ่งเหล่านั้นด้วย