[R] Calling library functions from outside R

Jim Nemesh nemesh at broad.mit.edu
Thu Jun 18 20:02:27 CEST 2009


Actually, I'm going to take by my comments.

You can use Rscript with multiple -e arguments to do what I was  
looking for:

Rscript -e 'library(broadgap.hapmaptools)' -e 'processAllFiles(dir="/ 
humgen/cnp04/sandbox/steve/1m/hapmap3/genotypes/ftp.hapmap.org/genotypes/2008-07_phaseIII/hapmap_format/forward 
", outRootDir="/humgen/cnp04/sandbox/data/snpTagging")'

Thanks for the pointer on getopt - it's much nicer than my homebrew  
solution.

-Jim

On Jun 18, 2009, at 1:54 PM, Jim Nemesh wrote:

> I did look at ?Rscript.  My question there was:
>>> Unfortunately, it looks like each expression is evaluated  
>>> separately.
>>> Is there a way to evaluate multiple expressions in the same
>>> environment to make the above work?
>
> I could write an Rscript client file, but it's still poor CLI  
> support compared to other languages, and I still have to distribute  
> an Rscript client.  I'd like to just load a library and make 1 call  
> to it on the command line.  Is there any way to do that with the -e  
> param?
>
> -Jim
>
> On Jun 18, 2009, at 1:39 PM, Gabor Grothendieck wrote:
>
>> See the getopt R package and have a look at ?Rscript
>>
>> Also on Windows see Rscript.bat and #Rscript.bat in
>> http://batchfiles.googlecode.com
>>
>> and on Linux see:
>> http://dirk.eddelbuettel.com/code/littler.html
>>
>> On Thu, Jun 18, 2009 at 1:25 PM, Jim Nemesh<nemesh at broad.mit.edu>  
>> wrote:
>>> I develop quite a bit of R code that I tend to distribute, or let
>>> other people embed in their software.  One of the things I'd really
>>> like to do is find a way to load an R library I've developed, and  
>>> call
>>> one function with arguments.
>>>
>>> Currently, I achieve that by building a separate R client file,  
>>> which
>>> reads in the command line arguments, loads the library, and calls  
>>> the
>>> main function. The commandLineArgs function below uses  
>>> commandArgs(),
>>> and searches the vector for the keys/values to make life easier.
>>>
>>> (code available at inside "birdsuite executables" at http://www.broad.mit.edu/science/programs/medical-and-population-genetics/birdsuite/birdsuite-downloads-0)
>>>
>>> Example:
>>> ---
>>> library (broadgap.utils)
>>> pedigreeFile<-commandLineArg("pedigreeFile", verbose=T)
>>> outPedigreeFile<-commandLineArg("outPedigreeFile", verbose=T)
>>> relabelPedigree(pedigreeFile, outPedigreeFile)
>>> ---
>>> called by:
>>>
>>> R CMD BATCH --pedigreeFile="foo" --outPedigreeFile="bar"
>>> example_client.R
>>>
>>> What I'd like to do is find a way to achieve the above, but without
>>> writing the client file, so I can avoid distributing these wrapper
>>> client files.  While the above works, it's not terribly robust,  
>>> and a
>>> user needs to know what they are doing. To make this robust, there
>>> would have to be a fair bit of work to properly validate arguments,
>>> and print help files appropriately. Python would be an obvious  
>>> choice
>>> for writing CLI's, as it has great CLI support and is easy to
>>> distribute and build executables.
>>>
>>> I've looked at the following options:
>>>
>>> RPy (setup is difficult, some users don't even know R, much less  
>>> being
>>> capable of the setup required here, which looks like it needs root)
>>> RSPython (same problems as RPy)
>>>
>>> These are reasonable for me to use for my own personal fooling  
>>> around,
>>> but not for distributing software to 1000's of users.
>>>
>>> Rscript looks like it could be a possibility:
>>> >Rscript -e 'library(broadgap. utils)' -e 'ls()'
>>> character(0)
>>>
>>> Unfortunately, it looks like each expression is evaluated  
>>> separately.
>>> Is there a way to evaluate multiple expressions in the same
>>> environment to make the above work?  If so, I could then wrap R in
>>> whatever language of choice I'd like, and only have to make a user
>>> install a library.
>>>
>>> Are there other options I'm missing?
>>>
>>> Thanks for help/input on this.
>>>
>>> -Jim Nemesh
>>>       [[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.
>>>
>
> ______________________________________________
> 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.




More information about the R-help mailing list