Выполнение R сценарии с графиками

У меня есть маленький сценарий оболочки (удар), который запускает скрипт R, который производит график, как произведено. Все хорошо работает, но immedietly после графика представляется выходами 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.

Заранее спасибо за любую справку!

28
задан Stephen Diehl 21 July 2010 в 16:43
поделиться

4 ответа

Если вы используете команду 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
29
ответ дан 28 November 2019 в 03:20
поделиться

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

3
ответ дан 28 November 2019 в 03:20
поделиться

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

pdf(file="myplot.pdf")

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

dev.off()
2
ответ дан 28 November 2019 в 03:20
поделиться

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

0
ответ дан 28 November 2019 в 03:20
поделиться