Не используйте системную библиотеку R - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь использовать сервер Linux с установленным R.По-видимому, в системной библиотеке R установлены старые версии не базовых пакетов, такие как dplyr и testthat.Поскольку у меня нет разрешения на редактирование системной библиотеки, я не могу обновить пакеты.

Я планирую использовать только пользовательскую библиотеку, поэтому я могу контролировать версии пакетов самостоятельно.Однако я не могу удалить папку "/usr/lib64/R/library" из .libPaths().Я попытался изменить переменные окружения R_LIBS_SITE и R_LIBS с файлами .Renviron и .Rprofile в другую папку, но папка /usr/lib64/R/library всегда будет присутствовать.Удаление с помощью команды .libPaths(.libPaths()[1:2]) также не работает.

Есть ли способ удалить системную библиотеку из .libPaths(), поэтому я не зависю от политики обновления администратора сервера?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы не можете удалить системную библиотеку, потому что там находятся базовые пакеты.Они не могут быть установлены где-либо еще, и R. без них работать не будет.

Лучше всего, если вы попросите своего системного администратора обновить системную библиотеку.Эти устаревшие пакеты, вероятно, содержат ошибки.

Если вы не можете этого сделать, запустите update.packages(instlib = "local"), чтобы установить все последние версии в библиотеке с именем "local".(Замените ваше собственное локальное имя библиотеки, конечно.) Это требует, чтобы все ваши пользователи указали .libPaths("local") при запуске, а некоторые, вероятно, забудут, так что это не так хорошо.

Это может быть проще для васпросто установить полную копию R в свой аккаунт.Тогда вы будете иметь контроль над вещами, и любой, кто использует вашу копию, получит вашу библиотеку.

(Новая версия (3.5.3) выйдет через десять дней; вы можете подождать или установить одну избета-версии или RC, которые должны быть доступны сейчас, затем обновляются снова, когда приходит окончательный выпуск.)

0 голосов
/ 01 марта 2019

Для меня это работает с использованием

 .libPaths(.libPaths()[2:1])

Это все равно будет искать системную библиотеку, но только после она будет искать в моей личной библиотеке, поэтому, если у меня более новая версия,он использует это. Примечание: Я использовал .libPaths()[2:1] не .libPaths()[1:2]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...