Подтвердить что ты не робот

Запуск R скриптов с графиками

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

Оболочка script.

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

И R script.

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

Заранее благодарим за помощь!

4b9b3361

Ответ 1

Если вы используете команду 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

или без shebang:

Rscript /path/to/myscript.r

Ответ 2

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

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

Это будет спать, пока вы не закроете окно графика.

Ответ 3

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

Ответ 4

Одним из решений было бы написать график в формате pdf вместо:

pdf(file="myplot.pdf")

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

dev.off()

Ответ 5

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