[R] It is possible to use a Shell command inside a R script?

Duncan Murdoch murdoch at stats.uwo.ca
Fri Aug 24 16:57:46 CEST 2007


On 8/24/2007 10:33 AM, Dirk Eddelbuettel wrote:
> On Fri, Aug 24, 2007 at 08:32:00AM -0400, Duncan Murdoch wrote:
>> On 8/24/2007 6:58 AM, Ronaldo Reis Junior wrote:
>> > Hi,
>> > 
>> > It is possible to use a shell command inside a R script?
>> > 
>> > I'm write a R script and I like to put somes shell commands inside to R. 
>> > Somethink like: convert fig01.png fig01.xpm or sed ..., etc.
>> 
>> The details and available functions depend on the platform, but you want 
>> to look at ?system, ?shell, and/or ?shell.exec.  (These all exist in 
>> Windows; on Unix-alikes, you probably won't have the latter two.)
> 
> Don't forget pipes. 
> 
> R's ability to consistently work on connections that may be local
> files, remotes files, program output, ... is a true treasure (and
> thanks and credits to, I believe, Brian Ripley to make it so).
> 
> Eg you can do this 
> 
>   OD <- read.table(pipe("links -dump http://cran.r-project.org/src/contrib/ | awk '/tar.gz/ {print $3, $4}'"), header=FALSE, col.names=c("file", "date"))
> 
> to get files and dates of files on CRAN.   
> 
> As I recall, this also works on that other operating system, provided
> you do all the legwork of installing other tools, setting PATHs etc
> to provide what works out of the box on the supposedly unfriendlier OS.

The pipe command you list doesn't work in Windows.  I'd guess this is 
because the pipe syntax "|" within the command is unsupported:  it tries 
to execute "links", with the rest of the line passed as arguments.  But 
I haven't traced through to check on this.

Duncan Murdoch



More information about the R-help mailing list