Подтвердить что ты не робот

Установка всех пакетов CRAN, которые еще не установлены?

Следующие R-команды установят все пакеты CRAN:

availablePackages <- available.packages()[,1]
install.packages(availablePackages)

И следующая команда перечислит все установленные пакеты:

installedPackages <- .packages(all.available = TRUE)

Мой вопрос: Как мне указать R установить все пакеты CRAN, которые еще не установлены?

4b9b3361

Ответ 1

Честно говоря, я думаю, что это кропотливая работа... это продлится несколько дней, даже недель (в зависимости от ресурсов), но вот код (мне просто нравится делать тривиальные вещи):

# 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)

Я до сих пор не понимаю, почему вы это делаете, но, эй... некоторые вещи просто не предназначены... Что меня больше всего волнует, так это то, что вы уже ответили на свой вопрос! Вы получили то, что вам было нужно, и вам просто нужно собрать все вместе... Нам не хватает смысла? У вас было что-то еще?!?

Ответ 2

1) Почему вы хотите это сделать? Есть более 3500 (по состоянию на февраль 2012 года) из них?

2) Вы просмотрели CRAN Task Views и 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> 

Изменить: в ответ на ваше наблюдение:

a) Если пакет не передает "R CMD check" в Linux и Windows, он не загружается в CRAN. Так что работа выполнена.

b) Получение всех зависит от вашего конца - это тоже работа, как вы увидите. Мы сделали это для cran2deb, который находится на http://debian.cran.r-project.org (который делает полномасштабное построение пакета Debian, которое больше, чем просто установка). Мы получаем около 2050 из 2150 пакетов. Некоторые из нас отказываются строить из-за лицензии, некоторые из них мы не можем из-за недостающих заголовков или библиотек, и некоторые из них мы не можем построить, потому что им нужно, например. Пакеты BioConductor.

Ответ 3

введите эту команду, и тогда все пакеты будут установлены автоматически:

install.packages(available.packages()[,1])

Ответ 4

Лучше, если вы используете:

    check.and.install.Package<-function(package_name){
        if(!package_name%in%installed.packages()){
           install.packages(package_name)
        }
     }

вызовите функцию и проверьте, установлен ли требуемый пакет:

    check.and.install.Package("pkgName")

Ответ 5

Я тестировал это, и он работает

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")

Привет

Ответ 6

Исходя из моего опыта, не стоит устанавливать сразу все пакеты R! Даже если вы не вызовете (используя библиотечную функцию) все эти пакеты, просто сидя в домашнем каталоге, они могут замедлить работу вашей R-студии. По крайней мере, то, что произошло в моем случае.