Rscript не распознает библиотеки при использовании renv - PullRequest
1 голос
/ 14 апреля 2020

Я работаю на Ma c OSX, использую v3.6.3 из R и использую renv. В Rstudio и R я могу загрузить библиотеки своих установленных пакетов, например, library(ggplot2) работает. Однако когда я запускаю скрипт с использованием Rscript, я получаю сообщение

Error in library(ggplot2) : there is no package called ‘ggplot2’

Согласно этому SO ответ , мне нужно убедиться, что значение

Sys.getenv('R_LIBS_USER') in R.exe

совпадает со значением

Rscript.exe -e ".libPaths()"

Но это значение одинаково, оба указывают на renv-system-library в папке моего проекта.

Так как мне это исправить?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

Может быть лучше указать lib.loc в library вызов

library(ggplot2, lib.loc = '/path/where/library/is/located')
0 голосов
/ 15 апреля 2020

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

    Error: package or namespace load failed for ‘ggplot2’:
 .onLoad failed in loadNamespace() for 'pillar', details:
  call: utils::packageVersion("vctrs")
  error: there is no package called ‘vctrs’

Теперь vctrs был в '/path/where/library/is/located', поэтому я думаю, что зависимые пакеты не загружались с этого пути, а по умолчанию для Rscript. Помещение print(.libPaths() в скрипт дало

"/usr/local/Cellar/r/3.6.3_1/lib/R/library"

вместо

[1] "/Users/Chris/Sites/app_name/renv/library/R-3.6/x86_64-apple-darwin18.7.0"
[2] "/private/var/folders/5_/p_yl0439059b7_jdqzrm0hr40000gr/T/RtmptdHcWN/renv-system-library"

для .libPaths() в Rstudio. Глядя на программу ruby, которая фактически выполняла программу Rscript, я обнаружил, что она запускается с опцией --vanilla, то есть

Rscript --vanilla script_name

Удаление опции --vanilla устранило проблему. Я думаю, что сценарии с параметром --vanilla перестали работать, потому что я переустановил R, используя brew, чтобы исправить другую проблему, с которой я столкнулся, и как часть этой команды выполнил эту команду:

brew link --overwrite r 
...