[R] Runing R in a bash script

Jeffrey Horner jeff.horner at vanderbilt.edu
Tue Apr 17 23:56:16 CEST 2007


Ulrik Stervbo wrote:
 > Hello!
 >
 > I am having issues trying to plot to a ong (or jpg)  when the R-code in a
 > bash script is executed from cron.
 >
 > I can generate a pdf file, but when I try to write to a png, the file is
 > created, but nothing is written. If I execute the bash script from my
 > console, everything works file. Any ideas?
 >
 > In my cron I have SHELL=/bin/bash - otherwise /bin/shell is used and the
 > folowing enery, so example is executed every minute
 > * * * * * [path]/example.sh
 >
 > I am running
 > R version 2.4.1 (2006-12-18)
 >
 > Here's a minimal example - two files one R-script ('example.r') and one
 > bash-script ('example.sh')
 >
 > example.r
 > # Example R-script
 > x <- c(1:10)
 > y <- x^2
 > png(file="example2.png")
 > #pdf(file="example2.pdf")
 > plot(x,y)
 > graphics.off()
 >
 > example.sh
 > #/bin/bash
 > #
 > # Hello world is written to exhotext every time cron executes this script
 > echo "Hello world" > echotext
 > # This works, but not when executed from cron
 > n=`R --save < example.r`
 > # using exec as in `exec R --save < example.r` dosent work with cron 
either
 > # This also works, but nothing is written to the png when executed 
from cron
 > R --save <<RSCRIPT
 > x <- c(1:10)
 > y <- x^2
 > png(file="example2.png")
 > #pdf(file="example2.pdf")
 > plot(x,y)
 > graphics.off()
 > #dev.off() dosent work at all when executed from cron
 > RSCRIPT

The png() device requires an X server for the image rendering. You might 
be able to get away with exporting the DISPLAY environment variable

export DISPLAY=:0.0 # try and connect to X server on display 0.0

within your script, but it will only work if the script is executed by 
the same user as is running the X server, *and* the X server is running 
at the time the script is executed.

There are a handful of packages that will create a png without the 
presence of an X server, and I'm partial to Cairo (since I've done some 
work on it). You can install the latest version like this:

install.packages("Cairo",,'http://rforge.net/',type='source')

Cairo can also outputs nice pdf's with embedded fonts... useful if you 
want to embed high-quality OpenType or TrueType fonts.

Best,

Jeff
-- 
http://biostat.mc.vanderbilt.edu/JeffreyHorner



More information about the R-help mailing list