Установка .libPaths () для запуска сценариев R из командной строки с помощью Rscript.exe - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь запустить сценарии R через BAT-файлы в командной строке Windows.

Для сценариев требуется несколько пакетов R, таких как data.table, tidyR и т. Д.

По эксплуатационным причинам все необходимые R-пакеты и зависимости (включая data.table) установлены на C:\Users\username\Documents\R\R-3.5.1\library. Мне не разрешено устанавливать RStudio в этой среде.

Когда я пытаюсь "C:\Program Files\R\R-3.5.1\bin\x64\Rscript.exe" script.R, я получаю ошибку, похожую на

Ошибка в библиотеке (data.table): нет пакета с именем data.table Исполнение остановлено

Как настроить .libPaths через командную строку, чтобы указывать на правильное расположение пакетов (т. Е. На C:\Users\username\Documents\R\R-3.5.1\library)?

Заранее спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

Отказ от ответственности: я незнаком с R.

С R: Поиск путей :

Путь поиска библиотеки инициализируется при запуске из среды переменная R_LIBS (которая должна быть разделенным двоеточиями списком каталогов в котором R библиотечные деревья укоренены), а затем в среде переменная R_LIBS_USER. Только каталоги, которые существуют в то время, будут включен.

По умолчанию R_LIBS не установлен, а R_LIBS_USER установлен в каталог ‘R / R.version $ platform-library / x.y’ домашнего каталога (или «Библиотека / R / x.y / библиотека» для сборок CRAN macOS), для R x.y.z.

Переменная окружения может быть создана с помощью set VARIABLE_NAME=YOUR_VALUE пакетной команды.

Таким образом, ваш командный файл, вероятно, должен выглядеть примерно так:

cd /d "C:\INSERT_PATH_TO_DIRECTORY_CONTAINING_script.R"
set "R_LIBS=C:\Users\username\Documents\R\R-3.5.1\library"
"C:\Program Files\R\R-3.5.1\bin\x64\Rscript.exe" script.R

Однако по причинам переносимости (скажем, коллега просит копию вашего скрипта или ваш компьютер умирает), я предлагаю поместить скрипт, библиотеку R и командный файл в один каталог, скажем, C:\Users\username\Documents\R. Пакетный файл C:\Users\username\Documents\R\script.bat становится:

cd /d "%~dp0"
set "R_LIBS=%~dp0R-3.5.1\library"
"%PROGRAMFILES%\R\R-3.5.1\bin\x64\Rscript.exe" "%~dpn0.R"

%PROGRAMFILES% переменная окружения расширяется до полного пути к папке program files, %~dp0 параметр раскрывается до полного пути каталога, в котором находится ваш пакетный файл, а %~dpn0 является пакетным файлом полный путь без расширения.

Обратите внимание, что %~dp0R-3.5.1 не является опечаткой, поскольку %~dp0 включает в себя обратную косую черту.

Таким образом, вы можете скопировать C:\Users\username\Documents\R в D:\Users\SOMEOTHERNAME\Documents\R, и скрипт все равно будет работать.

Если вы создаете другую версию своего скрипта, просто скопируйте командный файл, чтобы он имел то же имя файла, что и ваш скрипт, но с расширением .bat вместо .R, и он должен вызывать новый скрипт - это оказалось очень удобно при отладке и распространении скриптов.

В качестве альтернативы, если вы предпочитаете устанавливать библиотеки отдельно, вы можете использовать %HOMEDRIVE%%HOMEPATH%, который расширяется до C:\Users\username.

Извлечение правильного Documents пути к папке, а также R пути установки возможно, но требует чтения реестра и, следовательно, немного сложнее.

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