Установка всех пакетов CRAN, которые еще не установлены?
следующие команды R установят все пакеты CRAN:
availablePackages <- available.packages()[,1]
install.packages(availablePackages)
и следующая команда перечислит все установленные пакеты:
installedPackages <- .packages(all.available = TRUE)
мой вопрос: как я могу поручить R установить все пакеты CRAN, которые еще не установлены?
5 ответов
честно говоря, я думаю, что это кропотливая работа... это продлится несколько дней, даже недель (в зависимости от ресурсов), но вот код (мне просто нравится делать тривиальные вещи):
# get names of installed packages
packs <- installed.packages()
exc <- names(packs[,'Package'])
# get available package names
av <- names(available.packages()[,1])
# create loooong string
ins <- av[!av %in% exc]
install.packages(ins)
1) Почему вы хотите это сделать? Есть более 3500 (по состоянию на февраль 2012 года) из них?
2) вы смотрели на просмотры задач CRAN и ctv пакет, который позволяет устанавливать пакеты из данной задачи?
3) Вы полужирный вопрос-это простой запрос индексирования, который вы можете сделать вручную (и, кроме того, Также см. help(sets)
)
R> available <- LETTERS # a simple set
R> installed <- LETTERS[c(1:10, 15:26)] # a simple subset
R> available[ ! available %in% installed ]
[1] "K" "L" "M" "N"
R>
Edit: в ответ на ваши последующие действия:
a) если пакет не проходит проверку "R CMD" в Linux и Windows, он не загружается в CRAN. Так что работа сделана.
b) получение всех зависит от вашего конца-это тоже работа, как вы увидите. Мы сделали это для cran2deb, который находится в http://debian.cran.r-project.org (что делает полномасштабное создание пакетов Debian, которое больше, чем просто установка). Мы получаем около 2050 из 2150 построенных пакетов. Есть несколько, которые мы отказываемся строить из-за лицензии, некоторые мы не можем из-за отсутствующие заголовки или библиотеки и некоторые из них мы не можем построить, потому что им нужны, например, пакеты BioConductor.
введите эту команду и тогда все пакеты будут установлены автоматически:
install.packages(available.packages()[,1])
Я проверил это, и это работает
availablePackages=available.packages()
availablePackages<-as.vector(availablePackages[,1])
installedPackages=.packages(all.available = TRUE)
missedPackages<-setdiff(availablePackages, installedPackages)
for (i in 1:length(missedPackages))
{
pkgName <- missedPackages[i]
install.packages(pkgName)
}
print("END")
в отношении
лучше, если вы используете:
check.and.install.Package<-function(package_name){
if(!package_name%in%installed.packages()){
install.packages(package_name)
}
}
вызовите функцию и проверьте, установлен ли необходимый пакет:
check.and.install.Package("pkgName")