Yukarıdaki cevapların çoğu (ve bu sorunun kopyalarında) installed.packages
hangisinin kötü olduğuna güvenmektedir . Belgelerden:
Binlerce paket yüklendiğinde bu yavaş olabilir, bu nedenle adlandırılmış bir paketin kurulu olup olmadığını (system.file veya find.package kullanın) öğrenmek ya da bir paketin kullanılabilir olup olmadığını öğrenmek (arama gereksinimi ve kontrol etmek için) kullanmayın. dönüş değeri) veya az sayıda paketin ayrıntılarını bulmak için (packageDescription kullanın). Yüklü paket başına birkaç dosya okumalıdır, bu da Windows ve ağa bağlı bazı dosya sistemlerinde yavaş olacaktır.
Bu nedenle, paketi kullanarak require
ve yüklemede başarısız olursa yükleme yapmaya çalışmak daha iyi bir yaklaşımdır ( bulunmazsa require
geri dönecektir FALSE
). Bu uygulamayı tercih ederim:
using<-function(...) {
libs<-unlist(list(...))
req<-unlist(lapply(libs,require,character.only=TRUE))
need<-libs[req==FALSE]
if(length(need)>0){
install.packages(need)
lapply(need,require,character.only=TRUE)
}
}
Bu şekilde kullanılabilir:
using("RCurl","ggplot2","jsonlite","magrittr")
Bu şekilde tüm paketleri yükler, sonra geri döner ve tüm eksik paketleri yükler (isterseniz, kullanıcının paketleri yüklemek isteyip istemediğini sormak için kullanışlı bir yerdir). install.packages
Her paket için ayrı ayrı çağırmak yerine, kaldırılan paketlerin tüm vektörünü sadece bir kez geçirir.
İşte aynı işlev, ancak kullanıcının eksik paketleri yüklemek isteyip istemediğini soran bir pencere iletişim kutusu ile
using<-function(...) {
libs<-unlist(list(...))
req<-unlist(lapply(libs,require,character.only=TRUE))
need<-libs[req==FALSE]
n<-length(need)
if(n>0){
libsmsg<-if(n>2) paste(paste(need[1:(n-1)],collapse=", "),",",sep="") else need[1]
print(libsmsg)
if(n>1){
libsmsg<-paste(libsmsg," and ", need[n],sep="")
}
libsmsg<-paste("The following packages could not be found: ",libsmsg,"\n\r\n\rInstall missing packages?",collapse="")
if(winDialog(type = c("yesno"), libsmsg)=="YES"){
install.packages(need)
lapply(need,require,character.only=TRUE)
}
}
}
R version 3.0.2 (2013-09-25) x86_64-w64-mingw32/x64 (64-bit)
.