On Tue, Sep 11, 2012 at 6:00 PM, Tom Roche <tom_ro...@pobox.com> wrote: > > summary: how to structure an R file such that it can be both > > 1. used as a script via, e.g., (from OS commandline) > > $ Rscript foo.r bar=baz > > 2. imported and called as a function via, e.g. (from R commandline) > >> source('./foo.r) >> foo(bar='baz') > > ? I'm looking for the 'R equivalent' of how python supports this > usecase. > > details: > > As discussed in the thread beginning > > https://stat.ethz.ch/pipermail/r-help/2012-September/323255.html > > I have a script > > https://github.com/TomRoche/GEIA_to_netCDF/blob/master/netCDF.stats.to.stdout.r > > that takes named arguments without undue pain. I would also like to be > able to call it as a function from other scripts. How to do that in R? > In case that's not specific enough :-) I know how to structure files/ > modules in python like > > http://python.net/~goodger/projects/pycon/2007/idiomatic/cmdline.py > > (i.e., generically, > > http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#module-structure >> """module docstring""" >> >> # imports >> # constants >> # exception classes >> # interface functions >> # classes >> # internal functions & classes >> >> def main(...): >> ... >> >> if __name__ == '__main__': >> status = main() >> sys.exit(status) > > ) so that the file/module is both > > 1. callable from the OS commandline via, e.g., > > $ /path/to/cmdline.py > > 2. importable without mere import causing execution of the script's > functionality, e.g., > >>>> sys.path.append('/path/to') >>>> from cmdline import * >>>> process_command_line(...) > > How to do this in R?
Maybe take a look at littler. "littler provides hash-bang (i.e. script starting with #!/some/path) capability for GNU R, as well as simple command-line and piping use." http://dirk.eddelbuettel.com/code/littler.html James ______________________________________________ R-help@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.