R::YapRI::Interpreter.pm
A module to transform perl variables into R command lines to define simple objs.
use R::YapRI::Base; use R::YapRI::Interpreter::Perl qw/r_var/; my $perl_var = [1, 2, 3]; my $r_var = r_var($perl_var);
A interpreter to translate Perl variables into R commands for R::YapRI::Base
+==================+==============+===============================+ | PERL VARIABLE | R VARIABLE | Example | +==================+==============+===============+===============+ | undef | NULL | $px = undef | rx <- NULL | +------------------+--------------+---------------+---------------+ | empty ('' or "") | NA | $px = '' | rx <- NA | +------------------+--------------+---------------+---------------+ | integer | numeric | $px = 12 | rx <- 12 | +------------------+--------------+---------------+---------------+ | bigint,bigfloat | numeric | $px = '-1.2' | rx <- -1.2 | +------------------+--------------+---------------+---------------+ | word 'TRUE' | TRUE | $px = 'TRUE' | rx <- TRUE | +------------------+--------------+---------------+---------------+ | word 'FALSE' | FALSE | $px = 'FALSE' | rx <- FALSE | +------------------+--------------+---------------+---------------+ | any other word | character | $px = "sun" | rx <- "sun" | +------------------+--------------+---------------+---------------+ | ARRAY REF. | vector | $px = [1, 2] | rx <- c(1, 2) | +------------------+--------------+---------------+---------------+ | HASH REF. | object | see below (*) | +------------------+--------------+-------------------------------+
* R object or R function without arguments
$px = { a => undef }, will be just 'a' $px = { mass => '' }, will be just 'mass'
* R simple object with arguments
$px = { '' => { x => 2 }}, will be 'x = 2' $px = { '' => { x => [2, 4] }}, will be 'x = c(2, 4)
* R functions with arguments
$px = { log => 2 }, will be 'log(2)' $px = { log => [2, { base => 10 }] }, will be 'log(2, base = 10 )' $px = { t => {x => ''} }, will be 't(x)' $px = { plot => [{ x => ''}, { main => "TEST"} ]}, will be: plot(x, main = "TEST")
Use array ref. to order the arguments in a function.
Use hash ref keys to define an argument in an R function
For more complex data structures, use R::YapRI::Data::Matrix.
Aureliano Bombarely <aurebg@vt.edu>
The following class methods are implemented:
Usage: my $r_string = _r_var_noref($perl_var); Desc: Internal function to parse a single non-reference perl variable (scalar). Equivalence table: +==================+==============+=============================+ | PERL VARIABLE | R VARIABLE | Example | +==================+==============+===============+=============+ | undef | NULL | $px = undef | rx <- NULL | +------------------+--------------+---------------+-------------+ | empty ('' or "") | NA | $px = '' | rx <- NA | +------------------+--------------+---------------+-------------+ | integer | numeric | $px = 12 | rx <- 12 | +------------------+--------------+---------------+-------------+ | bigint,bigfloat | numeric | $px = '-1.2' | rx <- -1.2 | +------------------+--------------+---------------+-------------+ | word 'TRUE' | TRUE | $px = 'TRUE' | rx <- TRUE | +------------------+--------------+---------------+-------------+ | word 'FALSE' | FALSE | $px = 'FALSE' | rx <- FALSE | +------------------+--------------+---------------+-------------+ | any other word | character | $px = "sun" | rx <- "sun" | +------------------+--------------+---------------+-------------+ Ret: $r_string, a scalar with the perl2R variable translation Args: $perl_var, could be, a scalar or an array reference Side_Effects: Die if is used a perl reference. Example: my $rvar = _rvar_noref(12);
Usage: my $r_arg = _rvar_vector($arrayref); Desc: Internal function to convert an perl array into a R vector Ret: $r_arg, a scalar with the perl2R variable translation Args: $arrayref, with the argument list Side_Effects: Die if the argument is not an arrayref. Example: my $r_vector = _rvar_vector($arrayref);
Usage: my $r_arg = _rvar_arg($hashref); Desc: Internal function to convert an argument in a function in the following way: 2 ===> '2' 'YES' ===> '"YES"' [2, 3] ===> 'c(2, 3)' { x => undef } ===> 'x' { type => "p" } ===> 'type = "p"' { col => ["blue", "green"]} ===> 'col = c("blue", "green")' { labels => { x => undef } } ===> 'labels = x' Something different from that, will die. Ret: $r_arg, a scalar with the perl2R variable translation Args: $hashref, with the argument list Side_Effects: Die if the argument is not: scalar, array ref or a hash reference. Example: my $arg = _rvar_arg({ type => "p" });
Usage: my $r_string = r_var($perl_var); Desc: Parse a perl variable and return a string with the r variable format, For perl-non reference variables, see _rvar_noref +==================+=================+==============================+ | PERL VARIABLE | R VARIABLE | Example | +==================+=================+==============+===============+ | ARRAY REF. | vector | $px = [1, 2] | rx <- c(1, 2) | +------------------+-----------------+--------------+---------------+ | HASH REF. | object/function | see below | +------------------+-----------------+------------------------------+ * R object or R function without arguments $px = { a => undef }, will be just 'a' $px = { mass => '' }, will be just 'mass' * R simple object with arguments $px = { '' => { x => 2 }}, will be 'x = 2' $px = { '' => { x => [2, 4] }}, will be 'x = c(2, 4) * R functions with arguments $px = { log => 2 }, will be 'log(2)' $px = { log => [2, { base => 10 }] }, will be 'log(2, base = 10 )' $px = { t => {x => ''} }, will be 't(x)' $px = { plot => [{ x => ''}, { main => "TEST"} ]}, will be: plot(x, main = "TEST") Use array ref. to order the arguments in a function. Use hash ref keys to define an argument in an R function Ret: $r_string, a scalar with the perl2R variable translation Args: $perl_var, could be, a scalar or an array reference Side_Effects: Die if the reference used is not a ARRAY REF or HASH REF. Example: my $rvar = r_var([1, 2, 3, "TRUE", "last word"]);
Lukas Mueller
Robert Buels
Naama Menda
Jonathan "Duke" Leto
Copyright 2011 Boyce Thompson Institute for Plant Research
Copyright 2011 Sol Genomics Network (solgenomics.net)
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install R::YapRI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm R::YapRI
CPAN shell
perl -MCPAN -e shell install R::YapRI
For more information on module installation, please visit the detailed CPAN module installation guide.