(R) Ошибка при попытке загрузить пакет SQLDF

У меня возникли проблемы с запуском следующего кода:

install.packages("sqldf",dep=TRUE)
library(sqldf)
install.packages("RSQLite",dep=TRUE)
library(RSQLite)

После этого я намерен использовать функцию sqldf для выполнения некоторых запросов, но я застрял на ошибке, которую не знаю, как решить, и у меня возникли проблемы с поиском любых других ответов на переполнение стека, которые могут быть полезный.

Ниже приведена ошибка, которую я получаю после запуска первой строки:

 Loading required package: RSQLite
 Error: package or namespace load failed for ‘RSQLite’ in loadNamespace(i, c(lib.loc, .libPaths()),     versionCheck = vI[[i]]):
 namespace ‘rlang’ 0.4.0 is already loaded, but >= 0.4.2 is required
 Error: package ‘RSQLite’ could not be loaded

Затем я попытался запустить:

install.packages("rlang")

но получил следующую ошибку:

package ‘rlang’ successfully unpacked and MD5 sums checked
Warning in install.packages :
  cannot remove prior installation of package ‘rlang’
Warning in install.packages :
  problem copying C:\Users\My Name\Documents\R\win-library\3.6\00LOCK\rlang\libs\x64\rlang.dll to     C:\Users\My Name\Documents\R\win-library\3.6\rlang\libs\x64\rlang.dll: Permission denied
Warning in install.packages :
  restored ‘rlang’

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


person user2813606    schedule 11.02.2020    source источник
comment
Перезапустите R, затем попробуйте снова установить rlang, затем снова попробуйте установить RSQLite и sqldf. Когда пакет использует библиотеки DLL (или подобные объекты), R иногда не может выгрузить их, чтобы обновить их на месте, поэтому он просто не может работать. Перезапуск сбрасывает это.   -  person r2evans    schedule 11.02.2020
comment
Если бы я мог дать вам все баллы, я бы это сделал. ЭТО СРАБОТАЛО! БОЛЬШОЕ СПАСИБО!   -  person user2813606    schedule 11.02.2020
comment
Привет @r2evans : Нажмите кнопку ответа на вопрос ниже и используйте свой ответ выше, и я могу наградить вас баллами!   -  person user2813606    schedule 04.03.2020


Ответы (1)


Для обновления уже установленного пакета требуется, чтобы R мог unload установить пакет. Обычно это можно сделать легко, но часто это может быть проблематично, особенно с пакетами, которые имеют скомпилированные библиотеки (.so, .lib или .dll, в зависимости от SO). Я не знаю шагов, необходимых для распутывания таких общих объектов, но часто это просто не работает. Это может оставить процесс обновления в плохом состоянии: (1) не обновленный, но все еще пригодный для использования в этом и текущем сеансах; или (2) не обновляется и хранилище на диске находится в частичном состоянии, которое нельзя использовать (возможно, в других состояниях).

Несмотря на то, что можно обновлять пакеты с общими объектами, единственный гарантированный способ (особенно если у вас возникли проблемы) — это перезапустить R в состояние, в котором этот пакет не загружен. Если вы автоматически загружаете пакеты (из-за .Rprofile или .Rdata), то вам нужно будет начать без этих мер (возможно, «новый проект» и/или временно убрать .Rprofile).

Итак... перезапустите R и повторите попытку установки/обновления всех неудачных пакетов.

person r2evans    schedule 04.03.2020
comment
R --vanilla запустит R без запуска файла .Rprofile. - person G. Grothendieck; 05.03.2020