NAME Statistics::R - Perl interface to control the R statistical program DESCRIPTION This module controls the R interpreter (R project for statistical computing: ). Multiple architectures and OS are supported and a single instance of R can be accessed by several Perl processes. SYNOPSIS use Statistics::R; # Create a communication bridge with R and start R my $R = Statistics::R->new(); # Run simple R commands $R->run(q`postscript("file.ps" , horizontal=FALSE , width=500 , height=500 , pointsize=1)`); $R->run(q`plot(c(1, 5, 10), type = "l")`); $R->run(q`dev.off()`); # Pass and retrieve data my $input_value = 1; $R->set('x', $input_value); $R->run(q`y <- x^2`); my $output_value = $R->get('y'); print "y = $output_value\n"; $R->stop(); METHODS new() Create a Statistics::R bridge object between Perl and R and start() R. Available options are: shared Start a shared bridge. See start(). log_dir A directory where temporary files necessary for the bridge between R and Perl will be stored. R and Perl need to have read and write access to the directory! *By default this will be a folder called Statistics-R and placed in a temporary directory of the system* r_bin The path to the R binary. See *INSTALLATION*. set() Set the value of an R variable, e.g. $R->set( 'x', "apple" ); or $R->set( 'y', [1, 2, 3] ); get( $) Get the value of an R variable, e.g. my $x = $R->get( 'x' ); # $y is an scalar or my $y = $R->get( 'y' ); # $x is an arrayref start() Start R and set the communication bridge between Perl and R. Pass the option shared => 1 to use an already running bridge. stop() Stop R and stop the bridge. restart() stop() and start() R. bin() Return the path to the R binary (executable). send($CMD) Send some command to be executed inside R. Note that *$CMD* will be loaded by R with *source()*. Prefer the run() command. receive($TIMEOUT) Get the output of R for the last group of commands sent to R by *send()*. Prefer the run() command. lock() Lock the bridge for your PID. unlock() Unlock the bridge if your PID have locked it. is_locked() Return *TRUE* if the bridge is locked for your PID. In other words, returns *TRUE* if other process has *lock()ed* the bridge. is_started() Return *TRUE* if the R interpreter is started, or still started. clean_up() Clean up the environment, removing all the objects. INSTALLATION To install this package you need to install R on your system first, since *Statistics::R* need to find R path to work. If R is in your PATH environment variable, then it should be available from a terminal and be detected automatically by *Statistics::R*. This means that you do not have to do anything on Linux systems to get *Statistics::R* working. On Windows systems, in addition to the folders described in PATH, the usual suspects will be checked for the presence of the R binary, e.g. C:\Program Files\R. Your last recourse if *Statistics::R* does not find R is to specify its full path when calling new(): my $R = Statistics::R->new( r_bin => $fullpath ); Download page of R: Or go to the R web site: You also need to have the following CPAN Perl modules installed: Text::Balanced Regexp::Common File::Which EXECUTION FOR MULTIPLE PROCESSES The main purpose of *Statistics::R* is to start a single R interpreter that listens to multiple Perl processes. Note that to do that R and Perl need to be running with the same user/group level. To start the *Statistics::R* bridge, you can use the script *statistics-r.pl*: $> statistics-r.pl start From your script you need to use the *start()* option in shared mode: use Statistics::R; my $R = Statistics::R->new(); $R->start( shared => 1 ); $R->run('x = 123'); exit; Note that in the example above the method *stop()* wasn't called, since it will close the bridge. SEE ALSO * Statistics::R::Bridge * The R-project web site: * Statistics:: modules for Perl: AUTHOR Graciliano M. P. MAINTAINERS Brian Cassidy Florent Angly COPYRIGHT & LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. BUGS All complex software has bugs lurking in it, and this program is no exception. If you find a bug, please report it on the CPAN Tracker of Statistics::R: Bug reports, suggestions and patches are welcome. The Statistics::R code is developed on Github () and is under Git revision control. To get the latest revision, run: git clone git@github.com:bricas/statistics-r.git