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