Я недавно обновился до R 3.5.1 с 3.4.3. Я обновил свои пакеты следующим образом:
(a) скопировал пакеты из моей старой библиотеки в мою новую библиотеку (стараясь не перезаписывать базовые пакеты)
(б) бежал update.packages(ask = FALSE, dependencies = TRUE)
Я обнаружил, что ряд пакетов не устанавливался там, где они были указаны как импорт других пакетов, поскольку они «были созданы с версией r с различными внутренними компонентами и требуют переустановки».
Несколько разочаровывающе, это сообщение, казалось, перебирало некоторый скрытый список связанных или связанных пакетов, но только сообщало мне, что была проблема для одного пакета одновременно; Т.е. я установил бы пакет с неверной версией, а затем попытался бы переустановить пакет, заблокированный для установки, только чтобы повторить ошибку для другого пакета. Мне приходилось проходить это несколько раз, пока не осталось больше пакетов, связанных с неправильной версией, и, наконец, пакет, который мне нужно было использовать, можно было установить / обновить.
Также - я отмечаю, что некоторые пакеты были установлены из исходного кода (это были часто, но не исключительно те, которые вызывали ошибку «разные внутренние компоненты» для связанных пакетов выше). У меня действительно установлен Rtools, так что для меня это не проблема, а просто наблюдение, так как update.packages делал это каждый раз, когда сталкивался с исходной версией, которая была более актуальной, чем бинарный файл Windows (у меня Windows 10 PC).
Из всего этого я заключаю, что update.packages
пропустил много пакетов и фактически не обновил их по какой-то причине? Я все еще нахожу пакеты, которые не обновлялись.
Например:
> DescTools::Gmean(x)
Error: package ‘expm’ was installed by an R version with different internals; it needs to be reinstalled for use with this R version
Просмотр записи CRAN для DescTools
здесь указывает, что пакет expm
не является зависимостью, но импортируется.
Однако ?import.packages
говорит об аргументе dependencies
:
зависимости:
логическое указание, устанавливать ли также деинсталлированное
пакеты, от которых зависят эти пакеты / ссылка на / импорт / предложить (и так
на рекурсивно). Не используется, если repos = NULL. Также может быть персонажем
вектор, подмножество c («Зависит», «Импорт», «LinkingTo», «Предлагает»,
"Усиливает").
Поддерживается только если lib имеет длину один (или отсутствует), поэтому
Однозначно, где устанавливать зависимые пакеты. Если это не
случай игнорируется с предупреждением.
Значение по умолчанию NA означает c («Зависит», «Импорт», «LinkingTo»). ПРАВДА
означает использовать c («Зависит», «Импорт», «LinkingTo», «Предлагает») для pkgs
и c («Зависит», «Импорт», «LinkingTo») для добавленных зависимостей: это
устанавливает все пакеты, необходимые для запуска pkgs, их примеры, тесты
и виньетки (если автор пакета указал их правильно).
Во всех этих случаях «LinkingTo» опускается для бинарных пакетов.
Это означает, что update.packages(...dependencies = TRUE)
должен также обновить и / или установить все пакеты, импортированные другими пакетами.
Что мне не хватает?