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

561

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

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
Зависимость 'Rglpk' недоступна для пакета 'fPortfolio'
Что делать, если пакет недоступен для нашей версии R?
Пакет bigvis for R недоступен для версии 3.0.1 R?
пакет 'syncwave' / 'mvcwt' недоступен (для R версии 3.0.2)
пакет 'diamonds' недоступен (для R версии 3.0.0).
Не доступен ли пакет plyr для R для R версии 3.0.2?
Пакет bigmemory не устанавливается на R 64 3.0.2
пакет "makeR" недоступен (для версии 3.0.2)
пакет 'RTN' недоступен (для версии R R 3.0.1)
Неполадка Установка пакета geoR Пакет
'twitterR' недоступен (для версии R 3.1.0)
Как установить пакет Rcpp? Я получил сообщение «пакет недоступен».
Пакет «набор данных» недоступен (для версии R 3.1.1)
«пакет« rhipe »недоступен (для версии 3.1.2 R)»

Ричи Коттон
источник
9
Обратите внимание, что при использовании RStudio вы также получаете это предупреждение при установке из другого репозитория, отличного от CRAN. Это ошибка, о которой я уже писал несколько раз, но я не знаю, была ли она уже отсортирована.
Йорис Мейс,

Ответы:

563

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

Первое, что нужно проверить, правильно ли вы написали название пакета? Имена пакетов чувствительны к регистру в R.


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 или Биокондуктор устарел

Он может зависеть от более поздней версии 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")

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

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 и разделе Details of ?install.packages.


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

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

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

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

Richie Cotton
источник
2
@KonradRudolph также Viewработает в R GUI, Architect, Revo-R и Live-R. Не пробовал в Emacs / ESS.
Ричи Коттон
Ах, мой плохой. Я думал, что проверил и обнаружил, что функция не существует. Это, конечно, (но это не работает для меня на OS X ... ).
Конрад Рудольф
9
Думаю, стоит упомянуть, что installrработает только на windows
Дэвид Аренбург
2
«Распространено путать разницу между пакетом и библиотекой» - ну, да: сами разработчики R смущены этим. Как еще объяснить функцию library? Тем не менее, не должен ли этот ответ упомянуть / объяснить .libPaths? Неустановленные или недоступные для записи пути к библиотекам, по-видимому, являются одной из наиболее распространенных проблем при установке пакетов.
Конрад Рудольф
1
Я бы предложил включить еще один момент: Попытка установить пакеты, которые входят в r-core, как в этом вопросе , в котором пытается установить parallelпакет, когда он уже находится в r-core
Серхио Фернандес
90

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

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

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

Дмитрий
источник
4
Подозреваю, что это так. Похоже, что это ошибка в r-studio. Я только что проверил, и мне не нужно устанавливать репозиторий, если я просто запускаю R из терминала - только из r-studio.
adempewolff
И 3.5.1 также. Перед установкой dependenciesи repos, R не смог подключиться https://mirrors.sorengard.com/cran/src/contrib/PACKAGES(и, следовательно, устранение неполадок в другом вопросе не сработало). После этого я смог получить доступ к этому сайту, хотя пакеты все еще не загружаются простым способом.
user3386170
Также на моем другом компьютере, который имеет версию 3.5.0.
user3386170
Я пытаюсь загрузить blotter и quantstrat в версии 3.6.0 и использовал этот код, но безрезультатно: "Предупреждение в install.packages: пакет 'quantstrat' недоступен (для версии R R 3.6.0)". Любые другие предложения?
W Баркер
Была такая же проблема с e1071и R 3.6.1 на macOS High Sierra. Спасибо за помощь
Игорь Ф.
25

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

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

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

Саба
источник
2
для моей установки, curlустановив apt в Ubuntu и старый R 2.15.0, install.packages(..., method="curl")проблема была решена
jangorecki
Я должен был сделать, method="curl"а не wget, но это решило проблему
Джефф
install_versionв devtoolsпомогла мне обойти это. Мой Mac тоже не понравился wget. (У меня был R 3.2.3, который жаловался на то, что я не смог найти пакет с помощью архива http://. Другие пакеты устанавливались просто отлично)
Д. Вудс
Это сработало для меня с установкой R 3.2.2 в Ubuntu Linux 64 bit
Даррен Уилкинсон
22

Это решение может сломать R, но вот самое простое решение, которое работает 99% времени.

Вам нужно сделать это просто:

install.packages('package-name',repos='http://cran.us.r-project.org')

Как упомянуто автором здесь

паладин
источник
2
и этот 1% - это я: / install.packages ('graph', repos = ' cran.us.r-project.org' )
Сахил
Я попытался установить пакет stringrс помощью этой команды, но мне это не удалось. install.packages('stringr',repos = "http://cran.us.r-project.org", dependencies = TRUE) Installing package into ‘/usr/lib/spark/R/lib’ (as ‘lib’ is unspecified) Warning: unable to access index for repository http://cran.us.r-project.org/src/contrib: cannot open URL 'http://cran.us.r-project.org/src/contrib/PACKAGES' Warning message: package ‘stringr’ is not available (for R version 3.4.1)
Регрессор
похоже, я тоже часть 1%, у меня это не сработало
NetEmmanuel
15

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

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

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

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

    install.packages("foo", type="source", repos=NULL)
dardisco
источник
7
Обычно указанная зависимость от версии R существует по какой-то причине, поэтому может быть целесообразно проверить, что такое изменение может нарушить.
Джангорецкий
1
@dardisco Не удалил зависимость, но благодаря вашему комментарию я нашел зависимости и вижу, что мне просто нужно обновить R. Спасибо
sa_zy
9

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

бли
источник
Для проблем с Ubuntu, проверьте README: cran.r-project.org/bin/linux/ubuntu/README
Joris
Это решение сработало для меня для Debian для пакета mvtnorm, ksот которого зависит. Команда былаapt-get install r-cran-mvtnorm
Justapigeon
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"))
Tombart
источник
6

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

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

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

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

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

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

Biboswan
источник
4

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

  1. добавление deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/ в мой файл /etc/apt/sources.list
  2. Бег sudo apt-get update
  3. Бег sudo apt-get install r-base-dev

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

AlexG
источник
Таким образом, я решил мою проблему, но все еще обновляю R до последней версии (от 3.02до 3.4). Если вы хотите обновить свой R, это хороший способ.
Belter
4

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

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

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

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

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

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

Меняя это на

http_proxy="http://user:passwd@proxy.dom.com:port"

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

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

НТН

nachti
источник
2

Еще одна причина + решение

Я сталкиваюсь с этой ошибкой («пакет XXX недоступен для версии R XXX») при попытке установить pkgdown в моем RStudio на HPC моей компании.

Оказывается, снимок CRAN, который они имеют на HPC, сделан с января 2018 года (почти 2 года), и действительно, тогда pkgdown не существовало. Это было предназначено для управления источником пакетов для непрофессионалов, но, как разработчик, вы в большинстве случаев можете изменить это следующим образом:

## checking the specific repos you currently have
getOption("repos")

## updating your CRAN snapshot to a newer date
r <- getOption("repos")
r["newCRAN"] <- "https://cran.microsoft.com/snapshot/*2019-11-07*/"
options(repos = r)

## add newCRAN to repos you can use
setRepositories()

Если вы знаете, что делаете, и вам может потребоваться более одного пакета, который может быть недоступен в CRAN вашей системы, вы можете настроить это в своем проекте. .Rprofile .

Если это всего лишь одна упаковка, возможно, просто используйте install.packages("package name", repos = "a newer CRAN than your company's archaic CRAN snapshot").

SibyllWang
источник
2
  1. Посетите https://cran.r-project.org/src/contrib/Archive/ .
  2. Найдите пакет, который вы хотите установить с Ctrl+F
  3. Нажмите на название пакета
  4. Определите, какую версию вы хотите установить
  5. Открыть RStudio
  6. Тип " install.packages("https://cran.r-project.org/src/contrib/Archive/[NAME OF PACKAGE]/[VERSION NUMBER].tar.gz", repos = NULL, type="source")"

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

Например, мне нужно было установить 7 пакетов ( Sejong, hash, rJava, tau, RSQLite, devtools, stringr) , чтобы установить KoNLPпакет.

install.packages('Sejong')
install.packages('hash')
install.packages('rJava')
install.packages('tau')
install.packages('RSQLite')
install.packages('devtools')
install.packages('stringr')

library(Sejong)
library(hash)
library(rJava)
library(tau)
library(RSQLite)
library(devtools)
library(stringr)

install.packages("https://cran.r-project.org/src/contrib/Archive/KoNLP/KoNLP_0.80.2.tar.gz", repos = NULL, type="source")
library(KoNLP)
Аспин Лим
источник
1

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

source("https://bioconductor.org/biocLite.R")
biocLite("preprocessCore")
BioProgram
источник
1
Это только для пакетов с биокондуктором, и это также способ установки пакетов с биокондуктором.
Йорис
@JorisMeys Мне кажется, что все пакеты, которые я пытался установить, были доступны с помощью этого метода, но я в основном использую R для биоинформатики.
бли
1
@JorisMeys Я не знаю как, но biocLiteмогу прозрачно получить эти пакеты на кране и установить их. Я только что проверил dplyr(на Xubuntu 16.04, если это имеет значение). В надежде избежать беспорядка, насколько это возможно, теперь я пытаюсь установить все пакеты «одинаково» (в настоящее время используется biocLite).
бли
2
@bli ты прав, я исправлен. Код biocLiteраспознает правильные репозитории для пакета, а затем вызывает install.packages()для фактической установки. Но это не работает, потому что вы используете biocLite. Это работает, потому что install.packages()делает то, что должен делать. Нет никакой разницы между использованием biocLite()и install.packages()другими, кроме служебных данных и того факта, что biocLite()по умолчанию также обновляются все другие пакеты, которые он считает необходимыми. Так что я бы все же посоветовал использовать install.packages()для небиокондукторных пакетов.
Йорис
2
@bli это не гарантирует совместимость, он обновляет все до последней версии (если вы не поставили suppressUpdates = TRUE). Это то же самое, что звонить update.packages()и потом install.packages(). Потому что это буквально то, что biocLiteделает под капотом.
Йорис
0

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

  1. Настройка по умолчанию repos- MRANэто не удается получить много пакетов.
  2. Та версия R не имеет https, так, например: install.packages("knitr", repos = "https://cran.rstudio.com")кажется, работает.
Джек Уэйси
источник
0

Я обнаружил, что небольшое отклонение от пакета №6 устарело благодаря отличному решению @Richie Cotton.

Иногда сопровождающий пакета может показать разрывы версии R, которые он не поддерживает. В этом случае у вас есть по крайней мере два варианта: 1) обновить версию R до следующей версии, которую целевой пакет уже поддерживает, 2) установить самую последнюю версию из доступных старых, которые будут работать с вашей версией R.

Конкретный пример: последняя версия пакета rattleдля интеллектуального анализа данных CRAN , 5.3.0, не поддерживает версию 3.4 R, потому что она имеет большое обновление между версиями пакета 5.2.0 (R> = 2.13.0) и 5.3.0 (R > = 3.5).

В таком случае альтернативой обновлению установки R является уже упомянутое решение. Установите пакет, devtoolsесли у вас его нет (он включает пакет remotes), а затем установите конкретную версию, которая будет работать в вашей текущей версии R. Вы можете найти эту информацию на странице CRAN для архивов конкретного пакета.

library("devtools")
install_version("rattle", version = "5.2.0", repos = "http://cran.us.r-project.org")
Пабло Адамс
источник
0

В моем случае решением было просто обновить R.

Ferus
источник
-1

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

Clément F
источник