Запуск R сценариев с графиками - PullRequest
27 голосов
/ 21 июля 2010

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

Сценарий оболочки.

#!/bin/bash
R --slave --vanilla < myscript.r

И сценарий R.

daq = read.table(file('mydata.dat'))
X11()
pairs(daq)
//R Completes this and then exits immediately.

Заранее спасибо за любую помощь!

Ответы [ 5 ]

29 голосов
/ 21 июля 2010

Если вы используете команду Rscript (которая лучше подходит для этой цели), вы запускаете ее так:

#!/usr/bin/Rscript

daq = read.table(file('mydata.dat'))
X11()
pairs(daq)

message("Press Return To Continue")
invisible(readLines("stdin", n=1))

Убедитесь, что для myscript.r установлено разрешение на выполнение, а затем выполните:

/path/to/myscript.r

или без шебанга:

Rscript /path/to/myscript.r
13 голосов
/ 25 апреля 2016

Вы можете добавить цикл, который проверяет графическое устройство каждые n секунд:

while (!is.null(dev.list())) Sys.sleep(1)

Это будет спать, пока вы не закроете окно сюжета.

3 голосов
/ 21 июля 2010

Это не идеальное решение, но вы можете вызвать locator() сразу после команды plot.
Или просто сохраните график в формате PDF, а затем вызовите на нем средство просмотра PDF, используя system.

2 голосов
/ 21 июля 2010

Одним из решений было бы написать сюжет в формате PDF вместо:

pdf(file="myplot.pdf")

##your plot command here
plot( . . . )

dev.off()
0 голосов
/ 21 июля 2010

Более важный вопрос: почему вы хотите, чтобы R запускался после создания графа? Используйте его либо в интерактивном режиме, либо в пакетном режиме ... Я не понимаю, чего вы хотите достичь. Кроме того, попробуйте littler, он находится в репозиториях Ubuntu (универсальные репозитории, если я в порядке), или Rscript, поэтому перепишите свой сценарий и назовите его myscript.r, и обязательно укажите правильный путь в первой строке , Попробуйте whereis Rscript (обычно / usr / bin / Rscript). Забудьте о скрипте bash. Вы можете передать аргументы --vanilla и --slave в Rscript, но я не вижу цели ... O_o

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