Некоторые пакеты R не обновляются с помощью update.packages()

Выбор Packages->Update packages... дал:

> update.packages(ask='graphics',checkBuilt=TRUE)
--- Please select a CRAN mirror for use in this session ---
Warning: package 'foreign' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'lattice' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'Matrix' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'mgcv' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'nlme' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated
Warning: package 'rpart' in library 'C:/Program Files/R/R-3.0.2/library' will not be updated

Я запустил ярлык R в меню запуска "как администратор" и получил те же результаты.

R версия 3.0.2.

Ответ 1

Общее повторение вопроса

  • В Windows 7/8 пакет nicePack, включенный в базовую установку, устарел.
  • Вы обновляете его с помощью update.packages() или через эквивалентное меню графического интерфейса.
  • Вы получаете:
    Warning: package 'nicePack' in library 'C:/Program Files/R/R-3.*.*/library" will not be updated

Потенциальные причины

R не очень добр к Windows, поэтому он просто говорит "не будет обновлен", а не что-то вроде "разрешенное разрешение C:/Program Files/R/...". В любом случае вы понимаете, что R не может писать на C:/Program Files и перезагружать его как администратор и обновлять, но проблема не устранена!

Если вы проверяете каталог личных пакетов, где R может писать, вы видите, что существует обновленная версия nicePack. В Windows каталог обычно ~\R\win-library\x.y или находит его с Sys.getenv("R_LIBS_USER").

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

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

Решение

Удалить каталог каталога nicePack в каталоге личной библиотеки, перезапустить его как администратора и снова обновить.

Мнения

Я не знаю, есть ли настоящая ошибка в этом поведении, в любом случае более информативные сообщения наверняка помогут пользователю Windows.

Возможно, в Windows следует избегать библиотеки по умолчанию, в пользу личного. Во многих приложениях Windows используются C:\ProgramData или ~\AppData\Local, которые можно записать без особых привилегий.

Ответ 2

Я на Ubuntu, и у меня такая же проблема у RStudio. Я попытался решить sudo R и update.packages(). Но это не помогло. Однако sudo rstudio + update.packages() решили проблему.

Ответ 3

Я нахожусь в Windows, но используя R Studio Server через SSH-туннелирование (AWS/Ubunutu Linux). Я думаю, что иногда R Studio добавляет слой трудностей, а не упрощает задачу, это происходит с зависимостями пакетов от нескольких пользователей UNIX.

Итак, добавив этот возможный сценарий, который может повлиять на людей, которые ищут вышеупомянутый вопрос → >

У вас может быть версия пакета для вашего пользователя и другую версию на

Вам нужно su root и install.update() с помощью SUDO R (то же, что и R.exe в Windows) с пользователем root.

Затем, когда вы активируете RStudio Server, вы увидите обновленные пакеты системной библиотеки

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

убунту (пользователь): /usr/local/lib/R/

в системе: /usr/lib/R/library