PR

Rの数値ベクトルの基本と算術演算子などなど

R programming
記事内に広告が含まれています。
r_operators

Rはベクトルをベースとした言語です。

ベクトルといっても物理で習う、あの矢印(→)というよりも、「数字のリストのようなもの」と捉えるのが分かりやすいと以前に解説しましたね。

Numericベクトル

今回、まずNumericベクトルについて説明します。
英語のNumericとは数値という意味です。
つまり、Numericベクトルは数字を扱うベクトルです。

例えば、「ヒロ」と「ケン」といバスケットボール選手の各試合の得点を

point.hiro <- c(14, 8, 4, 6, 6, 2)
point.ken <- c(8, 4, 2, 9, 10, 9)

と、入力します。

では、このベクトルがNumericベクトルかどうかを確認するために、str( )関数を使います。

例えば、point.hiroなら、

str(point.hiro)
num [1:6] 14 8 4 6 6 2

となり、point.hiroベクトルは、

  • num=Numericベクトル
  • [1:6]=1次元配列→※もし2次元なら[1:6, 1:5]みたいになります
  • 要素=14, 8, 4, 6, 6, 2

であるということが分かります。

他にもNumericベクトルかどうかを確認する方法として、is.numeric( )関数があります。

is.numeric(point.ken)
[1] TRUE

TRUEならNumericベクトル、FALSEならNumericベクトル以外のベクトルタイプであることを意味します。
この場合、TRUEですから、point.kenはNumericベクトルであることが分かります。

Numericベクトルで使うRの計算演算子(Arithmetic Operator)

Numericベクトルの概要は掴めた思うので、Rで使える基本的な計算演算子について解説します。

ちなみに、足し・引き・割り・掛け算(+、ー、*、/)は大丈夫ですよね。

その他にも以下のような演算子があります。

演算子意味
^べき乗2^3 = 6
%%割り算の余りのみ7 %% 2 = 1
%/%割り算の商のみ7%/% 2 = 3
abs(x)絶対値abs(-1) = 1
log(x, base = y)対数log(4, base = 2) = 2
exp(x)指数関数(e^x)exp(1) = 2.718282
sqrt(x)平方根sqrt(4) = 2
factorial(x)階乗factorial(3) = 3!=6
choose(x, y)組み合わせ(xCy)choose(5, 3) = 10
RのNumeric演算子

という演算子があります。

特に注意が必要なのは、logです。
Rでは、logの底(base=y)を指定しないとネイピア数(e)を底とする自然対数を取ります。

例えば、xにlog(1), log(2), log(3)を代入してみると、

x <- log(1:3)
x
[1] 0.0000000 0.6931472 1.0986123

となり、log e 1, log e 2, log e 3を計算しています。

確認の為に、exp( )関数にこのxを代入すると

exp(x)
[1] 1 2 3

となります。つまり、log( )とexp( )は逆関数の関係にあることも証明できましたね。

また、logの底が2、10の場合は特別に、

log2( )
log10( )

の関数を使うこともできます。

数値ベクトルの四捨五入

Rには数字を四捨五入したり、切り捨て、切り上げなどを関数で簡単にできます。

まずはround関数です。

round( )は、( )内のdigitsオプションを使って小数点何桁で四捨五入するか指定できる

round(3.1415, digits = 2)
[1] 3.14

次に、signif関数では、signif( )内の digitsオプションで指定した有効桁数で四捨五入します。

signif(3.1415, digits = 2)
[1] 3.1

連続的な数値ベクトルを作成

数字の間にコロン(:)を入れると連続的な数値を作ることができます。

例えば、

> 1:3
[1] 1 2 3

他にも、seq関数でも連続的な数値ベクトルを作成できます。seq( )内のseq(from, to, by, length.out)を使うことで、コロンよりも複雑な連続する数字を作ることができます。

from始まりの数値
to終わりの数値
by間隔
length.out数値を等分する数

例えば、

seq(from = 1, to = 5)
[1] 1 2 3 4 5

seq(from = 1, to = 10, by = 2)
[1] 1 3 5 7 9

seq(from = 1, to = 9, length.out = 3)
[1] 1 5 9

数値を結合する

c( )を使ってベクトルを結合できます。
と問えば、ヒロとケンのスコアを結合する場合、

point.all <- c(point.hiro, point.ken)
point.all
[1] 14 8 4 6 6 2 8 4 2 9 10 9

となり、これでヒロとケンのポイントが結合された新しいベクトル(point.all)が作成されました。

数値を繰り返す

数値を繰り返す場合はrep関数が便利です。
rep( )内には以下のオプションを設定できます。

times繰り返す回数
each各要素の繰り返し回数
length.out全体の繰り返し回数

例えば、x<-c(1, 2, 3)として、
全体に3回反復するなら、

rep(x, times = 3)

rep(x, times = 3)
[1] 1 2 3 1 2 3 1 2 3

xの各要素(1,2,3)をtimesで指定した回数で反復するなら、

rep(x, times = c(1, 2, 3))
[1] 1 2 2 3 3 3

xの各要素をそれぞれ3回反復するなら、

rep(x, each = 3)
[1] 1 1 1 2 2 2 3 3 3

全体の反復回数はlength.outで指定すると、

rep(x, length.out = 5)
[1] 1 2 3 1 2

となります。rep( )は文字でも同様に反復できますよ!

ベクトルから特定の数字を抜き出す

ベクトルから特定の数字を抜き出す方法として[ ]を使用します。

例えば、ヒロの各試合ポイントを思い出してください。
point.hiro
[1] 14 8 4 6 6 2

では、3試合目のポイントを抜き出すのであれば、

point.hiro[3]
[1] 4

他にも、1,3,5試合のポイントを抜き出す場合は、

point.hiro[c(1, 3, 5)]
[1] 14 4 6

となります。

ベクトル内の特定の値を変更

この、[ ]を使えば、ベクトルの数値の変更も可能です。

ケンの各試合ポイントを確認してみます。

point.ken
[1] 8 4 2 9 10 9

もし、5試合目のポイントは10ではなく16であった場合、

point.ken[5] <- 16
point.ken
[1] 8 4 2 9 16 9

と、10→16へと修正されていますね。

まとめ

今回はRのNumericベクトルについてとNumeric演算子の簡単な使い方、またNumericベクトルの繰り返しや[ ](インデックス)の使い方を解説しました。

Rを使う上でとても基本的なものなので時間があるときに復習しておくのもいいですよ😉!

コメント