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列 1行 7 7 4 2行 1 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) { > # 処理 > }
続きはぼちぼちと。