Name

SPVM::R - Porting R language Features

Description

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

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]);

# Addition
my $add = DOP->add($vec1, $vec2);

# 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);

See also examples of matrix.

Data Frame Examples

Create a data frame.

use R::DataFrame;

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

Add colunns:

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"]);

See also examples of data frames.

Tutorial

SPVM::R Tutorial

Modules

N-Dimension Array

N-Dimension Array Operations

Matrix Operations

Data Frame

Utilities

Wiki

SPVM::R Wiki

Repository

SPVM::R - Github

Author

Yuki Kimoto kimoto.yuki@gmail.com

Copyright & License

Copyright (c) 2024 Yuki Kimoto

MIT License