Rを使ってみる3
前回からかなり日が経ってしまいましたが、いくつか気になった関数の使い方を書いていきます。
- TRUEになっているインデックスを返す(which)
ベクトルを渡すと、TRUEだった要素のindexを返してきます。JavaのArrayListのindexOfに近いです。ただし結果を複数返すことと、indexが1スタートなことに注意。
> x <- c( F, T,T,F,F,F,T) > x [1] FALSE TRUE TRUE FALSE FALSE FALSE TRUE > which(x) [1] 2 3 7
- 等差数列のベクトルを返す(seq)
初項がfrom, 末項がto, 公差がstepの等差数列のベクトルを手早く取得したいときに使えます。
seq (from, to, step) > seq(-3, 10, 2) [1] -3 -1 1 3 5 7 9
- 指定した文字列を含む要素を返す(grep)
ベクトルの中から指定した文字列を含む要素のindexを返すのがgrep、指定した文字列を含むindexがTRUEのベクトルを返すのがgrepl。ちなみにLinuxのgrepのように、正規表現を渡せる模様。
> y <- c("AAA", "BBB", "AB", "CCC") > y [1] "AAA" "BBB" "AB" "CCC" > grep("A", y) [1] 1 3 > y[grep("A", y)] [1] "AAA" "AB" > grepl("A", y) [1] TRUE FALSE TRUE FALSE > y[grepl("A",y)] [1] "AAA" "AB"
- 渡した複数の文字列を結合する(paste)
複数の要素を渡すと、それらを結合した文字列を返します。VB6のjoinのようなもの(渡すものが異なりますが)。文字列の他に数値を渡すことも可能(文字列として処理される)。注意としては、sepを指定しないと半角スペース(" ")を間に挟んで結合してしまうので、単純に結合したい場合はsep=""を指定する必要があるということ。
> (p <- paste("AA", "B", 1, "C")) [1] "AA B 1 C" > (p <- paste("AA", "B", 1, "C", sep="")) [1] "AAB1C" > (p <- paste("AA", "B", 1, "C", sep="/")) [1] "AA/B/1/C"