Как мне поступить с предупреждением «пакет« xxx »недоступен (для версии R xyz)»?

386

Я попытался установить пакет, используя

install.packages("foobarbaz")

но получил предупреждение

Warning message:
package 'foobarbaz' is not available (for R version x.y.z)

Почему R не считает, что пакет доступен?

См. также эти вопросы, относящиеся к конкретным примерам этой проблемы:

Мой пакет не работает для R 2.15.2
пакет "Rbbg" недоступен (для версии R версии 2.15.2)
не доступен (для версии R версии 2.15.2)
пакет doMC НЕ доступен для предупреждения R версии 3.0.0 в install.packages
Dependency 'Rglpk недоступен для пакета fPortfolio
Что делать, если пакет недоступен для нашей версии R?


Является ли пакет bigvis для R недоступен для версии R версии 3.0? пакет 'syncwave/' mvcwt недоступен (для версии R версии 3.0.2)
пакетные бриллианты недоступны (для версии R 3.0.0)
Является ли пакет plyr для R недоступным для версии R.0.0?
/questions/20980/how-should-i-deal-with-package-xxx-is-not-available-for-r-version-xyz-warning
Пакет bigmemory не устанавливается на R 64 3.0.2
package "makeR" недоступно (для версии 3.0.2)
package 'RTN недоступен (для версии R версии 3.0.1)
Проблема с установкой пакета geoR
пакет 'twitterR недоступен (для версии R.0.0.0)
Как установить "Rcpp, package? Я получил" пакет недоступен"
пакетный набор данных недоступен (для версии R 3.1.1)
"package" rhipe недоступен (для R версии 3.1.2)"
https://stackoverflow.com/questions/31439092/package-dplyr-is-not-available-for-r-version-3-1-1

  • 5
    Обратите внимание, что при использовании RStudio вы также получаете это предупреждение при установке из другого репозитория, отличного от CRAN. Это ошибка, о которой я уже сообщал несколько раз, но я не знаю, была ли она уже отсортирована.
Теги:
installation
repository
package
r-faq

14 ответов

417
Лучший ответ

1. Вы не можете писать

Первое, что нужно проверить - правильно ли вы указали название пакета? Названия пакетов в регистре зависят от регистра.


2. Вы не смотрели в правый репозиторий

Затем вы должны проверить, доступен ли пакет. Тип

setRepositories()

См. Также setRepositories.

Чтобы узнать, какие репозитории R будут искать ваш пакет и, при необходимости, выберите некоторые дополнительные. По крайней мере, вы, как правило, хотите, чтобы CRAN был выбран, а CRAN (extras) если вы используете Windows, и репозитории Bioc* если вы [GEN/PROTE/Metabol/транскриптов] omics биологический анализ.

Для того, чтобы навсегда изменить это, добавьте строку setRepositories(ind = c(1:6, 8)) в вашем Rprofile.site файл.


3. Пакет не находится в выбранных вами репозиториях.

Верните все доступные пакеты, используя

ap <- available.packages()

Смотрите также имена доступных пакетов АиРа, ? Available.packages.

Поскольку это большая матрица, вы можете использовать средство просмотра данных для его изучения. Кроме того, вы можете быстро проверить, доступен ли пакет, проверяя имена строк.

View(ap)
"foobarbaz" %in% rownames(ap)

Кроме того, список доступных пакетов можно увидеть в браузере для CRAN, CRAN (дополнительные), Bioconductor, R-forge, RForge и github.

Еще одно возможное предупреждение, которое вы можете получить при взаимодействии с зеркалами CRAN:

Warning: unable to access index for repository

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


Существует несколько причин, по которым пакет может быть недоступен.


4. Вам не нужен пакет

Возможно, вам действительно не нужен пакет. Обычно можно смутить разницу между пакетом и библиотекой, пакетом и набором данных.

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

Чтобы просмотреть доступные наборы данных, введите

data()

5. R или Bioconductor устарели

Он может зависеть от более поздней версии R (или одного из пакетов, которые он импортирует/зависит от того, делает ли он). смотреть на

ap["foobarbaz", "Depends"]

и рассмотрите возможность обновления вашей установки R до текущей версии. В Windows это проще всего сделать с помощью пакета installr.

library(installr)
updateR()

(Конечно, вам может потребоваться сначала установить install.packages("installr").

Эквивалентно для пакетов Bioconductor, возможно, вам потребуется обновить установку Bioconductor.

source("http://bioconductor.org/biocLite.R")
biocLite("BiocUpgrade")

6. Пакет устарел

Возможно, он был заархивирован (если он больше не поддерживается и больше не проходит R CMD check).

В этом случае вы можете загрузить старую версию пакета с помощью install_version()

library(remotes)
install_version("foobarbaz", "0.1.2")

Альтернативой является установка из зеркала CRAN github.

library(remotes)
install_github("cran/foobarbaz")

7. Нет двоичного файла Windows/OS X/Linux

У него может не быть двоичного кода Windows из-за необходимости использования дополнительного программного обеспечения, которого нет у CRAN. Кроме того, некоторые пакеты доступны только через источники для некоторых или всех платформ. В этом случае может быть версия в репозитории CRAN (extras) (см. setRepositories выше).

Если пакет требует компиляции кода (например, C, C++, FORTRAN), то в Windows установите Rtools или на OS X установите инструменты разработчика, сопровождающие XCode, и установите исходную версию пакета через:

install.packages("foobarbaz", type = "source")

# Or equivalently, for Bioconductor packages:
source("http://bioconductor.org/biocLite.R")
biocLite("foobarbaz", type = "source")

В CRAN вы можете узнать, нужны ли вам специальные инструменты для сборки пакета из исходного кода, посмотрев флаг NeedsCompilation в описании.


8. Пакет находится на github/Bitbucket/Gitorious

У него может быть репозиторий на Github/Bitbucket/Gitorious. Эти пакеты требуют remotes пакета для установки.

library(remotes)
install_github("packageauthor/foobarbaz")
install_bitbucket("packageauthor/foobarbaz")
install_gitorious("packageauthor/foobarbaz")

(Как и installr, возможно, потребуется install.packages("remotes") в первую очередь.)


9. Нет исходной версии пакета

Хотя бинарная версия вашего пакета доступна, исходной версии нет. Вы можете отключить эту проверку, установив

options(install.packages.check.source = "no")

как описано в этом ответе SO от imanuelc и в разделе "Подробности" пакета ?install.packages.


10. Пакет находится в нестандартном репозитории

Ваш пакет находится в нестандартном репозитории (например, Rbbg). Предполагая, что он достаточно совместим со стандартами CRAN, вы все равно можете загрузить его с помощью install.packages; вам просто нужно указать URL-адрес репозитория.

install.packages("Rbbg", repos = "http://r.findata.org")

RHIPE с другой стороны, не находится в репозитории, подобном CRAN, и имеет свои собственные инструкции по установке.

  • 2
    @KonradRudolph View работает также в R GUI, Architect, Revo-R и Live-R. Не пробовал в Emacs / ESS.
  • 0
    Ах, мой плохой. Я думал, что проверил и обнаружил, что функция не существует. Это, конечно, (но это не работает для меня на OS X ... ).
Показать ещё 9 комментариев
71

В последнем R (3.2.3) есть ошибка, которая несколько раз мешает найти правильный пакет. Обходным путем является установка репозитория вручную:

install.packages("lubridate", dependencies=TRUE, repos='http://cran.rstudio.com/')

Найденное решение в другом вопросе

  • 4
    Подозреваю, что это так. Похоже, что это ошибка в r-studio. Я только что протестировал, и мне не нужно устанавливать репозиторий, если я просто запускаю R из терминала - только из r-studio.
  • 2
    Это помогло и для R 3.2.2, спасибо @Dmitry
Показать ещё 4 комментария
21

Кажется, что существует проблема с некоторыми версиями R и libcurl. У меня была та же проблема на Mac (R version 3.2.2) и Ubuntu (R version 3.0.2), и в обоих случаях она была решена просто, запустив ее перед командой install.packages

options(download.file.method = "wget")

Решение было предложено другом, однако я не смог его найти ни на одном из форумов, поэтому, отправляя этот ответ другим.

  • 1
    для моей установки, установив curl apt в Ubuntu и старом R 2.15.0, install.packages(..., method="curl") действительно устранил проблему
  • 0
    Это работало для меня на OS X с R 3.2.2.
Показать ещё 3 комментария
8

Это избавило меня от времени, отлаживая ошибки. Во многих случаях только зеркала устарели. Эта функция может устанавливать несколько пакетов с их зависимостями с помощью https://cran.rstudio.com/:

packages <- function(pkg){
    new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
    if (length(new.pkg))
        install.packages(new.pkg, dependencies = TRUE, repos='https://cran.rstudio.com/')
    sapply(pkg, require, character.only = TRUE)
}

packages(c("foo", "bar", "baz"))
8

Одна вещь, которая произошла для меня, заключается в том, что версия R, предоставленная моим дистрибутивом Linux (версия R.0.0.2, предоставленная Ubuntu 14.04), была слишком старой для последней версии пакета, доступного на CRAN (в моем случае plyr версия 1.8.3 на сегодняшний день). Решение состояло в том, чтобы использовать систему упаковки моего дистрибутива вместо того, чтобы пытаться установить из R (apt-get install r-cran-plyr получила меня версия 1.8.1 от plyr). Возможно, я мог бы попробовать обновить R с помощью updateR(), но я боюсь, что это повлияет на мой менеджер пакетов распространения.

8

11. R (или другая зависимость) устарела, и вы не хотите ее обновлять.

Предупреждение. Это не совсем лучшая практика.

  • Загрузите исходный код.
  • Перейдите к файлу DESCRIPTION.
  • Удалите строку нарушения с помощью текстового редактора, например.

    Depends: R (>= 3.1.1)
    
  • Установить из локального (т.е. из родительского каталога DESCRIPTION), например.

    install.packages("foo", type="source", repos=NULL)
    
  • 2
    Обычно указанная зависимость от версии R существует по какой-то причине, поэтому может быть целесообразно проверить, что такое изменение может нарушить.
4

Это то, что я, наконец, смог сделать для установки пакета psych в R-3.4.1, когда получил то же предупреждение

1: Googled для этого пакета.

2: загрузите его вручную с расширением tar.gz

3: выберите вариант "Файл архива пакетов (.zip;.tar.gz)" для установки пакетов в R

4: просматривается локально в том месте, где оно было загружено и нажато установить

Вы можете получить предупреждение: "xyz" зависимостей недоступны для пакета, затем сначала установите их из репозитория, а затем выполните шаги 3-4 .

3

У меня была такая же проблема (в Linux), что можно было решить, изменив настройки прокси-сервера. Если вы находитесь за прокси-сервером, проверьте конфигурацию с помощью Sys.getenv("http_proxy") внутри R. В моем ~/.Renviron у меня были следующие строки (из https://support.rstudio.com/hc/en-us/articles/200488488-Configuring-R-to-Use-an-HTTP-or-HTTPS-Proxy), вызывающие проблему:

http_proxy=https://proxy.dom.com:port
http_proxy_user=user:passwd

Изменение его на

http_proxy="http://user:[email protected]:port"

решил проблему. Вы можете сделать то же самое для https.

Это была не первая мысль, когда я читал: "пакет xxx недоступен для r-версии-x-y-z"...

НТН

3

Я исправил эту ошибку на Ubuntu, тщательно следуя инструкциям для установки R. Это включало:

  • добавление deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/ в файл /etc/apt/sources.list
  • Запуск sudo apt-get update
  • Запуск sudo apt-get install r-base-dev

Для шага 1 вы можете выбрать любое зеркало для загрузки CRAN вместо моего университета в Торонто, если хотите.

  • 0
    Таким образом, я решил мою проблему, но все же обновил мой R до последней версии (с 3.02 до 3.4 ). Если вы хотите обновить свой R, это хороший способ.
2

Я допустил ошибку, забыв положить repos=NULL при установке пакета R из исходного кода. В этом случае сообщение об ошибке несколько вводит в заблуждение: package 'foobarbaz' is not available (for R version xyz)

Проблема была не в версии R, это был параметр repos. Я install.packages('path/to/source/code/of/foobarbaz', type='source', repos=NULL) который работал для меня по этому поводу.

Надеюсь, это поможет кому-то.

  • 1
    Когда я пытаюсь установить install.packages ('foobarbaz', repos = NULL), я получаю сообщение об ошибке "Ошибка в install.packages (" pair ", repos = NULL): type ==" both "нельзя использовать с repos = NULL"
  • 1
    Спасибо за комментарий - я думаю, что забыл написать параметр type="source" так как я упомянул, что установил этот пакет из исходного кода, я буду редактировать ответ.
1

Как упоминалось здесь (на французском языке), это может произойти, если на вашем компьютере установлены две версии R. Удалите самую старую, а затем повторите попытку установки пакета! Это сработало для меня.

1

Это почти всегда работает для меня, когда я использую биокондуктор в качестве источника, а затем вызываю biocLite. Пример:

source("https://bioconductor.org/biocLite.R")
biocLite("preprocessCore")
  • 0
    Это только для пакетов с биокондуктором, и это также способ установки пакетов с биокондуктором.
  • 0
    @JorisMeys Мне кажется, что все пакеты, которые я пытался установить, были доступны с помощью этого метода, но я в основном использую R для биоинформатики.
Показать ещё 5 комментариев
0

Еще одно небольшое дополнение при попытке протестировать старую версию R с использованием изображения докеры rocker/r-ver:3.1.0

  • Значение по умолчанию repos MRAN, и это не позволяет получить много пакетов.
  • В этой версии R нет https, поэтому, например: install.packages("knitr", repos = "https://cran.rstudio.com"), похоже, работает.
-4

Я столкнулся с той же проблемой при установке "настроя" пакета. Начинал поиск и пробовал много команд. Наконец, пакет устанавливается с помощью следующей команды:

install_url("http://cran.r-project.org/src/contrib/Archive/sentiment/sentiment_0.2.tar.gz")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню