Графический интерфейс gWidgets не может отображаться при вызове с R CMD BATCH

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

Однако мой менеджер понятия не имеет о программировании, и он хочет, чтобы он щелкнул-и-бежал. Поэтому я попытался использовать R CMD BATCH для создания файла .bat.

R CMD BATCH G:\Temp\dav\AB_Analyzer\MAINcode.r outputFile

Когда я запускал bat-файл, ничего не выскакивает.

Могу я узнать, что я сделал не так?

Спасибо за любую помощь.


person simeonyyyyyy    schedule 10.09.2013    source источник
comment
Я думаю, это как-то связано с тем фактом, что R CMD BATCH будет запускать R неинтерактивно с входными данными из infile и отправлять выходные данные (stdout/stderr) в другой файл. (согласно файлу справки!)   -  person mnel    schedule 11.09.2013
comment
У вас есть какие-нибудь идеи о том, как использовать ярлык «нажми и беги»?   -  person simeonyyyyyy    schedule 11.09.2013
comment
Хорошо, кажется, что R CMD BATCH не работает для интерактивного графического интерфейса. У меня есть другой способ, спасибо гению drunks-and-lampposts.com/2012/06/18/   -  person simeonyyyyyy    schedule 12.09.2013


Ответы (1)


Если вы запускаете сценарий R в пакетном режиме (R CMD BATCH), для «интерактивного флага» устанавливается значение false, что может вызвать такое поведение (без взаимодействия с пользователем = не показывать графический интерфейс).

Вы можете запросить «интерактивный флаг» с помощью функции interactive() в R.

Возможное решение: Добавьте параметр --interactive в командную строку.

Чтобы проверить его поведение, создайте файл сценария R со следующим содержимым:

print(interactive())

Если вы запустите этот скрипт с

R CMD BATCH --no-save --no-restore  batch_test.R out.txt

Вы найдете результат FALSE в файле out.txt, если запустите его с

R --vanilla --interactive  < batch_test.R

Вы увидите TRUE (поэтому используйте последнюю командную строку в качестве решения - примечание: без CMD).

person R Yoda    schedule 25.02.2016
comment
Спасибо тебе за это. Эта последняя строка - единственный способ заставить это работать на меня, несмотря на то, что я пытался по-разному из разных ответов здесь и в других местах. Я не совсем понимаю, почему, даже после прочтения справочных страниц, но я рад, что это так! Единственным вариантом, который мне пришлось использовать, было переключение --interactive на --ess, поскольку я работаю в Windows. Тогда он отлично работает, если вы специально вызываете R.exe или Rterm.exe, но не RScript.exe. - person Mooks; 01.07.2020
comment
Спасибо за указание на аргумент командной строки для Windows (в котором, похоже, отсутствует аргумент --interactive, но --ess выглядит хорошо (ess = не используйте getline для редактирования командной строки и настаивайте на интерактивном использовании). - person R Yoda; 01.07.2020