理想未来ってなんやねん

娘可愛い。お父さん頑張る。

R言語のはじめの一歩

データマイニングを行う為にRを始めましたので、自分用の忘備録として記載しておきたいと思います。

コメント

コメントは # 以降、行末までがコメントとなる。

> # これはコメント

ベクトル

ベクトルの作成

ベクトルはc()関数で作成できる。

> c(1,2,3,4,5)
 [1] 1 2 3 4 5
> x <- c(1,2,3,4,5)
> print(x)
[1] 1 2 3 4 5
規則性のあるベクトルの作成
> # 10から20まで1つずつ増加するベクトルを作成する。
> 10:20
 [1] 10 11 12 13 14 15 16 17 18 19 20
> # 10 から 20 まで等分した長さ4のベクトルを作成する
> seq(10, 20, length=6)
 [1] 10.00000 13.33333 16.66667 20.00000
> # 数列 c(-2,-1,0,1,2) を長さ 12 になるまで反復生成
> c <- rep(c(-2,-1,0,1,2), length=12)
> print(c)
 [1] -2 -1  0  1  2 -2 -1  0  1  2 -2 -1
> # 重複を取り除いたベクトルを返す
> unique(c)
[1] -2 -1  0  1  2
ベクトルの長さ

ベクトルの長さはlength()関数で調べることができる。

> length(x)
 [1] 5
ベクトルのラベル

names()関数を使用してベクトルにラベルを付けることができる。

> x <- c(1,2,3,4,5)
> print(x)
[1] 1 2 3 4 5
> names(x) <- c('A','B','C','D','E')      # ラベルを付ける。
> print(x)
A B C D E 
1 2 3 4 5 

行列

行列はマトリックスとデータフレームが主に用いられる。

マトリックスの作成

マトリックスはmatrix()関数で作成できる。

> x <- matrix(7,2,3)       # 要素が0の2行5列のマトリックスを作成
> print(x)
     [,1] [,2] [,3]
[1,]    7    7    7
[2,]    7    7    7


データーは行単位、列単位で入力することができる。

> x[,2] <- c(4,5)          # 3列目にデータ入力
> print(x)
     [,1] [,2] [,3]
[1,]    7    7    4
[2,]    7    7    5
> x[2,] <- c(1,2,3)        # 2行目にデータ入力
> print(x)
     [,1] [,2] [,3]
[1,]    7    7    4
[2,]    1    2    3
行列のサイズ

行列のサイズはdim()関数で調べることができる。

> dim(x)                   
[1] 2 3          # 2行3列


行数、列数はそれぞれnrow()関数、ncol()関数で調べることができる。

> nrow(x)                  # 行数を調べる
[1] 2
> ncol(x)                  # 列数を調べる
[1] 3
行列のラベル

rownames()関数、colnames()関数を使用して行列にラベルをつけることができる。

> rownames(x) <- c('1行','2行')
> colnames(x) <- c('A', 'B', 'C')
> print(x)
    A列 B列 C列
17   7   4
21   2   3
データフレーム

後で書く。

演算子

代入演算子

代入は <- または -> で表す。
&equal;も使用できる。

> # 左向きが基本
> x <- 5
> print(x)
[1] 5
> # 右向きでもOK
> 10 -> x
> print(x)
[1] 10
> x = 3
> print(x)
[1] 3
算術演算子
記号 名称
+ 加算
- 減算
* 乗算
/ 除算
^ べき算
%/% 除算の商
%% 除算の余り


算術演算は、ベクトル、データフレーム、マトリックスに対しても有効。

> x <- c(1,2,3,4)
> x + 1
[1] 2 3 4 5
> y <- c(4,3,2,1)
> x + y
[1] 5 5 5 5
> x * y
[1] 4 6 6 4
> x ^ 2
[1]  1  4  9 16
比較演算子
演算子 意味
== 等号
!= 不等号
<=
>=
<
>
比較関数
関数 意味
is.null(x) xがNULLであればTRUE
is.na(x) xがNA(欠損値)であればTRUE
is.nan(x) xがNaN(非数)であればTRUE
is.finite(x) 有限であればTRUE
is.infinite(x) Inf(無限大)であればTRUE
欠損値

NAとの演算はNAとなる。

> NA - 1
[1] NA
> 1 == 1
[1] TRUE
> NA == NA
[1] NA
非数

NaNは0/0、Inf-Inf、log(-1) などの数学的に未定義な演算を行った場合に出現する。

> 0/0
[1] NaN
> Inf-Inf
[1] NaN
> log(-1)
[1] NaN
Warning message:
In log(-1) : NaNs produced
欠損値

NAかどうかのテストは is.na()で行う。比較関数 == では行えない。

> x <- NA
> print(x == NA)
[1] NA
> print(is.na(x))
[1] TRUE
無限大

Inf(無限大)は有限数を0で割った時などに出現する。

> 1/0
[1] Inf
> log(0)
[1] -Inf

条件分岐

if (条件) {
    # 条件が真の場合の処理
} else {
    # 条件が偽の場合の処理
}

ループ

for文

for文の書式は次の通り。

for (変数 in ベクトル) {
   # 処理
}


回数を指定して繰り返す場合は、次のようにする。

> for (i in 1:100) {
>    # 処理
> }

続きはぼちぼちと。