The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Name

SPVM::R - Porting R language Features

Description

R class in SPVM is a port of the R language features.

WARNINGS:This distribution is under beta release. Some methods and fields will be changed..

Usage

Math and Matrix Examples

``````  use R::OP::Double as DOP;
use R::OP::Matrix::Double as DMOP;

# Scalar
my \$sca1 = DOP->c((double)3);

# Vector
my \$vec1 = DOP->c([(double)1, 2]);
my \$vec2 = DOP->c([(double)3, 4]);

# Subtruction
my \$sub = DOP->sub(\$vec1, \$vec2);

# Scalar multiplication
my \$scamul = DOP->scamul(\$sca1, \$vec1);

# Absolute
my \$abs_vec1 = DOP->abs(\$vec1);
my \$abs_vec2 = DOP->abs(\$vec2);

# Trigonometric
my \$sin_vec1 = DOP->sin(\$vec1);
my \$cos_vec1 = DOP->cos(\$vec1);
my \$tan_vec1 = DOP->tan(\$vec1);

# Innner product
my \$dot = DOP->dot(\$vec1, vec2);

# Matrix(column major)
my \$mat1 = DMOP->matrix([1, 0, 0, 1], 2, 2);

my \$mat_ret = DMOP->mul(\$mat1, \$vec1);``````

Data Frame Examples

Create a data frame.

``````  use R::DataFrame;

my \$data_frame = R::DataFrame->new;``````

``````  use R::OP::String as STROP;
use R::OP::Int as IOP;
use R::OP::Double as DOP;
use R::OP::Time::Pirce as TPOP;

\$data_frame->set_col("Name" => STROP->c(["Mike, "Ken", "Yumi"]));
\$data_frame->set_col("Age" => IOP->c([12, 20, 15]));
\$data_frame->set_col("Height" => DOP->c([(double)160.7, 173.2, 153.3]));
\$data_frame->set_col("Birth" => TPOP->c(["2010-10-15", "2000-07-08", "2020-02-08"]));``````

Get columns and rows:

``````  \$data_frame->slice(["Name", "Age"], [IOP->c([0, 1, 2])]);
``````

Get rows using conditions:

``````  # Age > 12
my \$conditions = IOP->gt(\$data_frame->col("Age"), IOP->rep(IOP->c(12), \$data_frame->nrow);
\$data_frame->slice(["Name", "Age"], [\$conditions->to_indexes]);

# Age > 12 && Height < 150.3
my \$conditions = IOP->and(
IOP->gt(\$data_frame->col("Age"), IOP->rep(IOP->c(12), \$data_frame->nrow)),
IOP->lt(\$data_frame->col("Height"), IOP->rep(IOP->c(150.3), \$data_frame->nrow)),
);
\$data_frame->slice(["Name", "Age"], [\$conditions->to_indexes]);``````

Sort rows:

``````  # Age asc
\$data_frame->sort(["Age"]);

# Age desc
\$data_frame->sort(["Age desc"]);

# Age asc, Height asc
\$data_frame->sort(["Age", "Height"]);

# Age asc, Height desc
\$data_frame->sort(["Age", "Height desc"]);``````

SPVM::R Tutorial

SPVM::R Wiki

SPVM::R - Github

Author

Yuki Kimoto `kimoto.yuki@gmail.com`