Rを使ってみる3

前回からかなり日が経ってしまいましたが、いくつか気になった関数の使い方を書いていきます。

  • TRUEになっているインデックスを返す(which)

ベクトルを渡すと、TRUEだった要素のindexを返してきます。JavaArrayListの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。ちなみにLinuxgrepのように、正規表現を渡せる模様。

> 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"