Автоматически отвечать «Да» на приглашение библиотеки R - PullRequest
0 голосов
/ 29 ноября 2018

Я работаю над тем, чтобы определить контейнер Docker, который можно было бы развернуть в облачной среде, и подготовить некоторые отчеты по базе данных нашей фирмы и развернуть ее с минимальным участием нашей команды по науке о данных (включая меня), насколько это возможно.

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

Раздражающая вещь (в данном случае) о потребностях заключается в том, что при первом запуске она запрашивает следующее:

>library('needs')

Should `needs` load itself when it's... needed?   (this is recommended)

1: No
2: Yes

Selection:

В типичной интерактивной настройке это нормально, я просто набираю «Да» и нажимаю клавишу ввода, и я готов идти.Однако, когда я хочу, чтобы вся среда создавалась и запускалась один раз в неделю, я не хочу отвечать на этот вопрос.Я хотел бы предположить, что да.

То, что я до сих пор пробовал, включает в себя каждый из них:

library('needs', quiet=TRUE)
library('needs', quietly=TRUE)
suppressMessages(library('needs', quietly=TRUE))
suppressWarnings(suppressMessages(library('needs', quietly = T)))
suppressPackageStartupMessages(library('needs', quietly=TRUE))

, ни один из которых не решает проблему. требуется документация предусматривает изменение этого параметра позже программным способом, но не для , определяющего параметр при первом запуске:

Рекомендуемое использование - разрешить автозагрузке функции при появлении запроса при первой загрузке пакета в интерактивном режиме.Чтобы изменить этот параметр позже, запустите needs ::: autoload (TRUE) или needs ::: autoload (FALSE), чтобы включить или выключить автозагрузку, соответственно.

Я также попытался выполнить тихую установкуТоже безрезультатно.К сожалению, я не могу запустить команды bash в своем Dockerfile, чтобы ответить Да, или, по крайней мере, я не нашел способа.

Я бы хотел избежать удаления зависимостей для нужд, так как это потребует LOTрефакторинга кода.

Есть идеи, как решить эту проблему?

Спасибо!:] -Vince

Обновление

Решение немного странное, но в моем Dockerfile я делаю vim-редактирование файла, который нужно назначить переменной sysfile:

sysfile <- system.file("extdata", "promptUser", package = "needs")

, который для ME был / usr / local / lib / R / site-library / needs / extdata / promptUser, и изменил его содержимое с "1" на "0", решая мою проблему.

1 Ответ

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

Лучшим решением, вероятно, было бы сделать это, чтобы он не задавал вопрос в первую очередь.Вы можете просмотреть код, который он запускает при загрузке пакета на github: https://github.com/cran/needs/blob/master/R/needs-package.R

Если вы установите опцию, которую он проверяет заранее, тогда ему не нужно задавать вопрос в первую очередь:

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