Running R Scripts with Plots
I have a small shell script (bash) which runs a R script which produces a plot as output. Everything works fine but immedietly after the plot is rendered R quits. Is there a way to keep the R session alive until the plot window is closed.
The shell script.
#!/bin/bash
R --slave --vanilla < myscript.r
And the R script.
daq = read.table(file('mydata.dat'))
X11()
pairs(daq)
//R Completes this and then exits immediately.
开发者_如何学GoThanks in advance for any help!
If you use the Rscript command (which is better suited for this purpose), you run it like this:
#!/usr/bin/Rscript
daq = read.table(file('mydata.dat'))
X11()
pairs(daq)
message("Press Return To Continue")
invisible(readLines("stdin", n=1))
Make sure to set the execute permission on myscript.r, then run like:
/path/to/myscript.r
or without the shebang:
Rscript /path/to/myscript.r
You could add a loop that checks for the graphical device every n seconds:
while (!is.null(dev.list())) Sys.sleep(1)
This will sleep until you close the plot window.
This is not a perfect solution, but you may call locator()
just after the plot command.
Or just save the plot to pdf and then invoke pdf viewer on it using system
.
One solution would be to write the plot out to pdf instead:
pdf(file="myplot.pdf")
##your plot command here
plot( . . . )
dev.off()
More important question is why do you want R to run after graph creation? Use it either in interactive mode or in batch mode... I don't understand what do you want to accomplish. Besides, try littler
, it's located in Ubuntu repos (universe repos, if I'm correct), or Rscript
, so rewrite your script and name it myscript.r, and be sure to put correct path in the first line. Try whereis Rscript
(usually /usr/bin/Rscript). Forget about bash script. You can pass --vanilla and --slave arguments to Rscript, but I don't see the purpose... O_o
精彩评论