Некоторые пакеты 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