A couple of weeks ago I asked how it is possible to run an R script (not a function) passing some parameters. Someone suggested the function "commandArgs()". I read the on-line help and found no clarifying example. Therefore I do not know how to use it appropriately. I noticed this function returns the pathname of the R executable which is not what I need. I meant to ask if it is possible to open an R session and launch a script passing parameters that the script can retrieve and use itself. Just like in C I can run a program and call it with some arguments> Example_Prog A B CThe program "Example_Prog" can acess its own arguments through the data structures "argc" an "argv". How can I launch an R script simulating the above mechanism ? Shall I use source ("script-name") ? Where are the arguments to be passed, as part of the source call ? Is the function "commandArgs" to be places as one of the first code lines of the script in order to access its own arguments ? Is there any "commandArgs" usage example ? Thank you very much in advance. Maura tutti i telefonini TIM! [[alternative HTML version deleted]]
Try this: A <- 1 B <- 2 C <- 3 source("myfile.R") Now the code in myfile can access A, B and C. On Tue, Feb 17, 2009 at 10:55 AM, <mauede at alice.it> wrote:> A couple of weeks ago I asked how it is possible to run an R script (not a function) passing some parameters. > Someone suggested the function "commandArgs()". > I read the on-line help and found no clarifying example. Therefore I do not know how to use it appropriately. > I noticed this function returns the pathname of the R executable which is not what I need. > > I meant to ask if it is possible to open an R session and launch a script passing parameters that the script can retrieve and use itself. > Just like in C I can run a program and call it with some arguments > >> Example_Prog A B C > > The program "Example_Prog" can acess its own arguments through the data structures "argc" an "argv". > > How can I launch an R script simulating the above mechanism ? > Shall I use source ("script-name") ? > Where are the arguments to be passed, as part of the source call ? > Is the function "commandArgs" to be places as one of the first code lines of the script in order to access its own arguments ? > Is there any "commandArgs" usage example ? > > Thank you very much in advance. > Maura > > > > > > > tutti i telefonini TIM! > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
On 2/17/2009 10:55 AM, mauede at alice.it wrote:> A couple of weeks ago I asked how it is possible to run an R script (not a function) passing some parameters. > Someone suggested the function "commandArgs()". > I read the on-line help and found no clarifying example. Therefore I do not know how to use it appropriately. > I noticed this function returns the pathname of the R executable which is not what I need. > > I meant to ask if it is possible to open an R session and launch a script passing parameters that the script can retrieve and use itself. > Just like in C I can run a program and call it with some arguments > >> Example_Prog A B C > > The program "Example_Prog" can acess its own arguments through the data structures "argc" an "argv". > > How can I launch an R script simulating the above mechanism ? > Shall I use source ("script-name") ? > Where are the arguments to be passed, as part of the source call ? > Is the function "commandArgs" to be places as one of the first code lines of the script in order to access its own arguments ? > Is there any "commandArgs" usage example ?Gabor gave you a solution from within R. If you want to run a script from the command line, then use commandArgs(TRUE). For example, put this into the file test.R: commandArgs(TRUE) (The TRUE says you only want to see the trailing arguments, not everything else on the command line.) Then from the command line, do Rscript test.R A B C and you'll see the output [1] "A" "B" "C" Duncan Murdoch
Here's how I do this: The last lines of my .First() function are these: ## Run command line program if there is one if(length(.cmd <- commandArgs(trailingOnly = TRUE)) > 0) try(source(textConnection(.cmd), echo = T, prompt.echo = "> ")) and on my Linux path I have this csh script, called "runR" #! /bin/csh # This is the runR script. # It starts R in a specified directory (default /mra/prod/R) # and submits the string given as its last argument to that R process. # To submit multiple Rcommands, use a single string with the commands # separated by semi-colons. # set usage = 'runR [-d directory] "cmd1; cmd2; cmd3"' # # Example: runR "chartControl()" # # starts R and immediately invokes the chartControl() # function, and exits when chartControl() does. if ($#argv == 0 ) then echo $usage exit(1) endif set rDir = /mra/prod/R if("$1" == "-d") then shift set directory = $1 shift else set directory = $rDir endif umask 002 cd $directory set log = $rDir/tmp/runR.log if( -e $log ) then set nLines = `wc -l $log | awk '{print $1}'` if($nLines > 25000) then tail -20000 $log > $log.tmp mv $log.tmp $log endif endif R --no-save --args "$argv ; q()" |& tee -a $log # end of runR script -- Jeff