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

Rstats - R language build on Perl (EXPERIMENTAL)

INSTALLATION

curl -L cpanmin.us | perl - -n  git@github.com:yuki-kimoto/Rstats.git

Usage

  use Rstats;
  my $r = Rstats->new;
  
  # Vector
  my $v1 = $r->c([1, 2, 3]);
  my $v2 = $r->c([2, 3, 4]);
  my $v3 = $v1 + v2;
  print $v3;

See examples in t directory to know current inplemented features.

Corresponding to R

  # print a1
  print $a1

  # array(1:24, c(4, 3, 2))
  array('1:24', [4, 3, 2])

  # 1:24
  c('1:24')

  # c(1, 2, 3)
  c([1, 2, 3])
  
  # names
    # names(a1)
    $r->names($a1)
  
    # names(a1) = c("n1", "n2")
    $r->names($a1 => ["n1", "n2"]);
  
  # matrix
    # matrix(1:12, 4, 3)
    $r->matrix('1:12', 4, 3)
    
    # matrix(1:12, nrow=4, ncol=3)
    $r->matrix('1:12', {nrow => 4, ncol => 3});
    
    # matrix(1:12, 4, 3, byrow=TRUE)
    $r->matrix('1:12', 4, 3, {byrow => 1});
  
  # a1 + a2
  $a1 + $a2
  
  # a1 - a2
  $a1 - $a2
  
  # a1 * a2
  $a1 * $a2
  
  # a1 / a2
  $a1 / $a2
  
  # a1 ^ a2 (power)
  $a1 ** $a2
  
  # a1 %% a2 (reminder)
  $a1 % $a2
  
  # a1 %/% a2 (integer quotient)
  $r->tranc($a1 / $a2)

  # as.matrix(a1)
  $r->as_matrix($a1)
  
  # as.vector(a1)
  $r->as_vector($a1)
  
  # as.array(a1)
  $r->as_array($a1)

  # is.matrix(a1)
  $r->is_matrix($a1)
  
  # is.vector(a1)
  $r->is_vector($a1)
  
  # is.array(a1)
  $r->is_array($a1)

  # abs(a1)
  $r->abs($a1)
  
  # sqrt(a1)
  $r->sqrt($a1)

  # exp(a1)
  $r->exp($a1)
  
  # expm1(a1)
  $r->expm1($a1)
  
  # log(a1)
  $r->log($a1)
  
  # logb(a1)
  $r->logb($a1)
  
  # log2(a1)
  $r->log2($a1)
  
  # log10(a1)
  $r->log10($a1)
  
  # sin(a1)
  $r->sin($a1)
  
  # cos(a1)
  $r->cos($a1)
  
  # tan(a1)
  $r->tan($a1)
  
  # asin(a1)
  $r->asin($a1)
  
  # acos(a1)
  $r->acos($a1)
  
  # atan(a1)
  $r->atan($a1)
  
  # sinh(a1)
  $r->sinh($a1)
  
  # sinh(a1)
  $r->sinh($a1)
  
  # cosh(a1)
  $r->cosh($a1)
  
  # cosh(a1)
  $r->cosh($a1)
  
  # atan(a1)
  $r->atan($a1)
  
  # tanh(a1)
  $r->tanh($a1)
  
  # asinh(a1)
  $r->asinh($a1)
  
  # acosh(a1)
  $r->acosh($a1)
  
  # acosh(a1)
  $r->acosh($a1)
  
  # atanh(a1)
  $r->atanh($a1)
  
  # ceiling(a1)
  $r->ceiling($a1)
  
  # floor(a1)
  $r->floor($a1)
  
  # trunc(a1)
  $r->trunc($a1)
  
  # round
    # round(a1)
    $r->round($a1)

    # round(a1, digit)
    $r->round($a1, $digits)
    
    # round(a1, digits=1)
    $r->round($a1, {digits => 1});
  
  # t
  $r->t($a1)
  
  # rownames
    # rownames(a1)
    $r->rownames($a1)
    
    # rownames(a1) = c("r1", "r2")
    $r->rownames($a1 => ["r1", "r2"])
    
  # colnames
    # colnames(a1)
    $r->colnames($a1)
    
    # colnames(a1) = c("r1", "r2")
    $r->colnames($a1 => ["r1", "r2"])

  # nrow(a1)
  $r->nrow($a1)
  
  # ncol(a1)
  $r->ncol($a1)
  
  # row(a1)
  $r->row($a1)
  
  # col(a1)
  $r->col($a1)

  # colMeans(a1)
  $r->colMeans($a1)
  
  # rowMeans(a1)
  $r->rowMeans($a1)
  
  # rowSums(a1)
  $r->rowSums($a1)
  
  # rbind(c(1, 2), c(3, 4), c(5, 6))
  $r->rbind([1, 2], [3, 4], [5, 6])
  
  # cbind(c(1, 2), c(3, 4), c(5, 6))
  $r->cbind([1, 2], [3, 4], [5, 6]);