2016-06-11 2 views
2

отмечу следующее, нажмите HERE:R запускается в графическом интерфейсе или нет?

я задать тот же самый вопрос, в том смысле, что мне нужно знать, была ли моя R среда была запущена из терминала, или в среде типа GUI.

Мотивация моего вопроса, как я произвожу ряд .pdf отчетов, и, если пользователь называется функция, которые производят отчеты под GUI, то я хочу, чтобы открыть отчеты с помощью программы системы по умолчанию .pdf, но если сценарий был запущен из командной строки или через сеанс, запущенный в командной строке, то это должно быть подавлено.

В RStudio, если я бегу interactive(), результат TRUE, и если я открываю R сессию в терминале и выполнить ту же команду, результат также TRUE, поэтому, на мой вопрос, по существу, как я могу дифференцировать ? Я запускаю MacOSX, но хотел бы, чтобы ответ был уместен для mac, unix и windoze.

Cheers,

+1

Когда вы говорите «открыть R сессию в терминале» вы открываете терминал и выполнение «R» или «R CMD BATCH»? – Benjamin

+0

'echo 'interactive()' | R' говорит 'FALSE', поэтому он работает правильно. Вопрос в том, действительно ли вы хотите определить, работает ли графический интерфейс или вы хотите определить, работает ли R в интерактивном режиме (в этом случае 'interactive()' будет достаточным)? –

+0

Я выполняю 'R', а не' R CMD BATCH', поэтому сеансы, открытые через 'R', или сеансы, выполняемые через исполняемый R-скрипт' #!/Usr/bin/env Rscript', должны возвращать 'FALSE', если сеанс запускается в чем-то вроде RStudio, он должен возвращать 'TRUE' –

ответ

2

commandArgs() выведет командную строку, которая запустила R сессии и .Platform$OS.type сообщит ОС так:

switch(.Platform$OS.type, 
    windows = if (grepl("Rterm", commandArgs())) cat("terminal\n") else cat("GUI\n"), 
    ...fill in for each other operating system... 
) 
Смежные вопросы