Re: [R] Calling R from R and specifying "wait until script is finished"

From: Uwe Ligges <ligges_at_statistik.uni-dortmund.de>
Date: Wed 25 May 2005 - 18:30:51 EST

Don MacQueen wrote:

> I don't know about efficient, but here is a way that I find to be
> practical, with around 100 R scripts.

I don't see a reason why your functions are writing character strings using cat() into files, and after that processing those files using system calls and tools (e.g. grep) which are not available on all platforms.

 From my point of view the R way is to save the state into R objects (e.g. a vector of status codes with one element for each "R script"). Then you can easily use R functions to claculate on those objects.

Uwe Ligges

> I create a master R script (I call it "Runall.r"). It begins like this:
>
> ## Execute me with R --save < Runall.r >& Runall.log
>
> hc <- TRUE
> if (hc) sink('Runall.out')
>
> t0runall <- Sys.time()
> cat('========================================================\n')
> cat('Running script "Runall.r" at',format(t0runall),'\n')
> cat('========================================================\n')
>
> msg <- try(source('ae-175.r')) ; rm.trymsg(msg)
> msg <- try(source('ae-235.r')) ; rm.trymsg(msg)
> msg <- try(source('ae-251.r')) ; rm.trymsg(msg)
> msg <- try(source('ae-331.r')) ; rm.trymsg(msg)
> msg <- try(source('ae-332.r')) ; rm.trymsg(msg)
> msg <- try(source('ae-491.r')) ; rm.trymsg(msg)
> msg <- try(source('ae-695.r')) ; rm.trymsg(msg)
> msg <- try(source('ae-801.r')) ; rm.trymsg(msg)
>
> ## and so on, for as many scripts as I want to run
> ## although I constructed the list of scripts to run by hand, it could
> easily be done
> ## as a loop, with the script names constructed from the loop index
>
> ## the script ends with:
>
> cat('========================================================\n')
> t1 <- Sys.time()
> cat('[Runall.r] Elapsed
> time',format(t1-t0runall),attributes(t1-t0runall)$units,'\n')
>
> if (hc) {
> cat('Done\n')
> sink()
>
> system('grep failed Runall.out > Runall.info')
> cat('\n')
> system('grep succeeded Runall.out >> Runall.info')
> cat('\n')
>
> cat('See files Runall.out and Runall.info\n')
> cat('Done\n')
> }
>
> ####
> #### The function rm.trymsg() is this:
>
> rm.trymsg <- function(msg) {
> if (class(msg)=='try-error') {
> cat('============',tblid,'failed =============\n')
> return(FALSE)
> }
> if (data.class(msg)=='list'& unlist(msg)[[1]]=='bad.table') {
> cat('============',tblid,'failed ===== bad.table ==========\n')
> return(FALSE)
> }
> cat('=========',tblid,'succeeded =========\n')
> TRUE
> }
>
> ## and the purpose of using try() and rm.trymsg() is to let the job
> continue if an error occurs in one of
> ## the scripts. Note, however, that the text strings "bad.table" and
> "tblid" are unique to the task I am doing, and would not
> ## work in general.
>
> At 8:51 PM -0400 5/21/05, Lapointe, Pierre wrote:
>

>> Hello,
>>
>> Let's say I have 50 R scripts to run.  What would be the most 
>> efficient way
>> to run them?
>>
>> I thought I could do multiple Rterms in a DOS batch file:
>>
>> Ex:
>> Rterm <1.R> 1.txt
>> Rterm <2.R> 2.txt
>> ...
>> Rterm <50.R> 50.txt
>>
>> However, I'm afraid they will all open at the same time.   I know I could
>> pause the batch file with something like:
>>
>> PING 1.1.1.1 -n 1 -w 60000 >NUL  (to delay 60 seconds)
>>
>> But that would require that I know how long each of my scripts take.
>>
>> Is there an easier way?  Something like calling R from R and 
>> specifying that
>> the script has to be finished before continuing.
>>
>> Thanks
>>
>> Pierre Lapointe
>>
>>
>>
>> *********************************************************************************** 
>>
>> AVIS DE NON-RESPONSABILITE:\ Ce document transmis par 
>> courri...{{dropped}}
>>
>> ______________________________________________
>> R-help@stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide! 
>> http://www.R-project.org/posting-guide.html

>
>

>

R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed May 25 18:54:05 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:03 EST