Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl

簡単な計算を行おう | Rstats入門(統計解析・科学技術計算)

簡単な計算を行ってみましょう。Rstatsでは、以下の演算子を使って、計算が行えます。

四則演算

記号 意味
+ 足し算
- 引き算
* 掛け算
/ 割り算

足し算、引き算、掛け算、割り算の記号は、R言語と同じです。

累乗

累乗はPerlの演算規則に従って「**」を使って行います。R言語の「^」とは異なるので注意してください。

記号 意味
** 累乗

剰余

剰余はPerlの演算規則に従って「%」を使って行います。R言語の「%%」とは異なるので注意してください。

記号 意味
% 剰余

整数商

Rstatsでは整数商を計算するための演算子は用意されていません。R言語の「%/%」は利用できないので注意してください。整数商を求める場合は、tranc関数を使って行います。割り算を行った後に、整数部を取り出します。

r->tranc($x1 / $x2)

計算の例を示します。Rstatsでは、ベクトルを使った計算が基礎になるので、c_関数を使って作成します。c_関数はベクトルを作成するための関数です。ひとつの数値であっても、ひとつの要素を持つベクトルとして計算します。

use strict;
use warnings;
use Rstats;

my $x = (c_(1) + c_(2) - c_(3) * c_(4)) / c_(5) ** c_(6);
print $x;

出力結果です。計算結果が出力されます。

[1] -0.000576

c_()をいつでも使うのは多少面倒に感じるかもしれませんが、Perlの上にR言語を実装しているために必要です。Rstatsで計算をするときは、いつでもベクトルを使って計算をするということを覚えてください。

今後のサンプルでは簡便のための、上記の「use Rstats」の下の行から書いていきますので、必要に応じて補ってください。

ルートの計算、対数の計算を行う場合には、Rstatsにはたくさんの関数が用意されています。たとえば、ルートの計算を行うためには、「sqrt関数」を使用します。

my $x = r->sqrt(c_(2));
print $x;

出力結果。

[1] 1.4142135623731

以下にRstatsで用意されている数学関数を紹介します。

記号 意味
sqrt √ の計算
abs 絶対値
exp 自然対数の底
expm1 x の絶対値 が1よりかなり小さい時に exp(x)-1 をより正確に計算
log 自然対数
log10 常用対数 (底が10の対数)
log2 底が2の対数
sin サイン・正弦関数
cos コサイン ・ 余弦関数
tan タンジェント ・ 正接関数
asin sin の逆関数
acos cos の逆関数
atan tan の逆関数
sinh ハイパボリックサイン
cosh ハイパボリックコサイン
tanh ハイパボリックタンジェント
asinh sinh の逆関数
acosh cosh の逆関数
atanh tanh の逆関数
logb log と同じ
log1px(実装未) x の絶対値が1より(かなり)小さい時,log(1+x) をより正確に計算
gamma(実装未) ガンマ関数
lgamma(実装未) log(gamma(x)) と同じ
ceiling 引数以上の最小整数
floor 引数以下の最大整数:いわゆるガウス記号
trunc 整数部分を求める
round 四捨五入
signif(x,a) 実装未 x を 有効桁で a 桁まで丸める(正・0・負を判定するsignとは異なる)

Rstats入門(統計解析・科学技術計算)

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。