Запуск 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.
Заранее благодарим за помощь!
Ответы
Ответ 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