Running R Scripts with Plots

后端 未结 5 1299
情书的邮戳
情书的邮戳 2020-12-09 02:36

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

相关标签:
5条回答
  • 2020-12-09 03:12

    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
    
    0 讨论(0)
  • 2020-12-09 03:14

    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.

    0 讨论(0)
  • 2020-12-09 03:15

    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.

    0 讨论(0)
  • 2020-12-09 03:15

    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

    0 讨论(0)
  • 2020-12-09 03:26

    One solution would be to write the plot out to pdf instead:

    pdf(file="myplot.pdf")
    
    ##your plot command here
    plot( . . . )
    
    dev.off()
    
    0 讨论(0)
提交回复
热议问题