Як мені поводитися з тим, що "пакет" xxx "недоступний (для R-версії xyz)" попередження?


560

Я спробував встановити пакет, використовуючи

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 для R не доступний для R версії 3.0.1?
пакет 'syncwave' / 'mvcwt' недоступний (для R версії 3.0.2)
пакет 'алмази' недоступний (для версії R 3.0.0)
Чи пакет Plyr для R не доступний для R версії 3.0.2?
Пакет bigmemory не встановлюється на R 64 3.0.2
пакет "makeR" недоступний (для версії 3.0.2)
пакунок 'RTN' недоступний (для R версії 3.0.1)
Проблема Встановлення пакету
пакетів GeoR 'twitterR' недоступний (для R версії 3.1.0)
Як встановити пакет Rcpp, пакет? У мене "пакет недоступний"
пакет даних " пакет даних" недоступний (для R версії 3.1.1)
"пакет" rhipe "недоступний (для версії R 3.1.2)"


9
Зауважте, що при використанні RStudio ви отримуєте це попередження також при установці з іншого репо, ніж CRAN. Про цю помилку я повідомляв уже кілька разів, але не знаю, чи її вже відсортовано.
Joris Meys

Відповіді:


562

1. Ви не можете заклинання

Перше, що потрібно перевірити, чи правильно ви написали назву пакета? Назви упаковок відрізняються регістром у Р.


2. Ви не шукали у правильному сховищі

Далі слід перевірити, чи доступний пакет. Тип

setRepositories()

Див. Також «setRepositories» .

Щоб побачити, у яких сховищах R буде шукати ваш пакет, і необов'язково виберіть деякі додаткові. Як мінімум, зазвичай ви хочете, CRANщоб вас обрали, і CRAN (extras)якщо ви використовуєте Windows, і Bioc*сховища, якщо ви їх зробили[gen / prote / metabol / transcript] 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.

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

як описано у цій відповіді на відповідь від 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.
Річі Коттон

Ах, моя погана. Я подумав, що перевірив і виявив, що функція не існує. Це, звичайно, (але це не працює для мене на OS X… ).
Конрад Рудольф

9
Думаю, варто згадати, що installrпрацює лише на windows
David Arenburg

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

Я намагаюся завантажити блоттер і Quantstrat у версії 3.6.0, і використовував цей код, але безрезультатно: "Попередження в install.packages: пакет" quantstrat "недоступний (для 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://. Інші пакунки встановлювались чудово)
D. Woods

Це працювало для мене із встановленням R 3.2.2 на 64-розрядному Ubuntu Linux
Даррен Вілкінсон

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' )
Sahil Nagpal

Я спробував встановити пакет 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)

7
Зазвичай заявлена ​​залежність від версії R існує з якоїсь причини, може бути розумним перевірити, що така зміна потенційно може порушитися.
jangorecki

1
@dardisco Не вилучив залежність, але завдяки вашому коментарю я знайшов залежності і бачу, що мені просто потрібно оновити R. Дякую
sa_zy

9

Одне, що трапилося для мене, - це те, що версія R, надана моїм дистрибутивом Linux (версія R.0 3.0.2, надана 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
Юстапійген

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

6

Це те, що я, нарешті, міг би зробити для встановлення пакета психіки в R-3.4.1, коли отримав те саме попередження

1: Google для цього пакета.

2: завантажено його вручну з розширенням tar.gz

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

4: переглянуто локально до місця його завантаження та натиснуто встановити

Можливо, ви отримаєте попередження: залежності "xyz" недоступні для пакета, а потім спочатку встановіть їх із сховища, а потім виконайте кроки 3-4.


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

Для кроку 1 ви можете вибрати будь-яке дзеркало для завантаження CRAN замість мого університету в Торонто, якщо ви хочете.


Цей спосіб вирішив мою проблему, але все-таки оновити мій 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) що працювало для мене з цього приводу.

Сподіваюся, що це комусь допоможе.


1
Коли я намагаюся install.packages ('foobarbaz', repos = NULL) я отримую помилку "Помилка install.packages (" пара ", repos = NULL): type ==" обидва "не можна використовувати з 'repos = NULL'"
Аджай Б

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-версії-xyz" ...

HTH


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


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

Це майже завжди працює для мене, коли я використовую біопровідник як джерело, а потім викликаю biocLite. Приклад:

source("https://bioconductor.org/biocLite.R")
biocLite("preprocessCore")

1
Це лише для біопровідникових пакетів, і це також спосіб встановлення біопровідникових пакетів.
Joris Meys

@JorisMeys Мені здається, що всі пакунки, які я намагався встановити, були доступні за допомогою цього методу, але я в основному використовую R для біоінформатики.
блі

1
@JorisMeys Я не знаю як, але biocLiteвміє прозоро витягувати ці пакунки на Cran та встановлювати їх. Я щойно тестував на dplyr(на Xubuntu 16.04, якщо це має значення). Сподіваючись максимально уникнути безладу, я зараз намагаюся встановити всі пакети «однаково» (зараз використовуюсь biocLite).
блі

2
@bli ти правий, я виправлений. Код в biocLiteрозпізнає правильний репост для пакета, а потім закликає install.packages()виконати фактичну установку. Але це не працює, тому що ви використовуєте biocLite. Це працює, тому що install.packages()робить те, що він повинен робити. Немає різниці між використанням biocLite()та install.packages()іншими, крім накладних витрат, і тим, що biocLite()за замовчуванням також оновлюються всі інші пакети, які він вважає необхідними. Тому я б все-таки радив використовувати install.packages()для небіопровідникових пакетів.
Joris Meys

2
@bli це не гарантує сумісності, він оновлює все до останньої версії (якщо ви не ставите suppressUpdates = TRUE). Це те саме, що дзвонити update.packages()і потім install.packages(). Бо це буквально те, що biocLiteробиться під капотом.
Joris Meys

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-версію до наступної, яку вже підтримує цільовий пакет;

Конкретний приклад: остання версія CRAN пакета rattleдля обміну даними, 5.3.0, не підтримує R версії 3.4, оскільки вона мала велике оновлення між версіями пакета 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")


-1

Як згадувалося тут (французькою мовою), це може статися, коли на вашому комп'ютері встановлена ​​дві версії R. Видаліть найстаріший, а потім спробуйте встановити пакунок ще раз! Це добре працювало для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.