データフレームや行列に,列名をつける。
(a <- matrix(1:12, 3, 4))
## [,1] [,2] [,3] [,4] ## [1,] 1 4 7 10 ## [2,] 2 5 8 11 ## [3,] 3 6 9 12
colnames(a) <- c("東京", "京都", "名古屋", "広島") a
## 東京 京都 名古屋 広島 ## [1,] 1 4 7 10 ## [2,] 2 5 8 11 ## [3,] 3 6 9 12
データフレームや行列の,列名を取り出す。
colnames(iris)
## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
データフレームや行列の行数を取り出す。
nrow(iris)
## [1] 150
オブジェクトのクラスを調べる。
class(iris)
## [1] "data.frame"
class(iris[,1])
## [1] "numeric"
class(iris[,5])
## [1] "factor"
a <- matrix(1:12, 3, 4) class(a)
## [1] "matrix"
class(a[1,])
## [1] "integer"
class(1L)
## [1] "integer"
class(1)
## [1] "numeric"
文字列を数値にする。
as.numeric("123")
## [1] 123
as.numeric("1.234")
## [1] 1.234
factor 変数を数値にする。
(fac <- factor(c("male", "female", "u.k.")))
## [1] male female u.k. ## Levels: female male u.k.
as.numeric(fac)
## [1] 2 1 3
数値を文字列にする。
as.character(123)
## [1] "123"
as.character(1.234)
## [1] "1.234"
factor 変数を文字列にする。
(fac <- factor(c("male", "female", "u.k.")))
## [1] male female u.k. ## Levels: female male u.k.
as.character(fac)
## [1] "male" "female" "u.k."
データフレーム(行列)の重複する行を取り除く。
( d <- data.frame(a=c(2, 2, 5, 4, 1, 2, 2), b=c("f", "r", "o", "u", "p", "r", "z"), c=c(2, 4, 3, 5, 2, 4, 4)) )
## a b c ## 1 2 f 2 ## 2 2 r 4 ## 3 5 o 3 ## 4 4 u 5 ## 5 1 p 2 ## 6 2 r 4 ## 7 2 z 4
( u <- unique(d) )
## a b c ## 1 2 f 2 ## 2 2 r 4 ## 3 5 o 3 ## 4 4 u 5 ## 5 1 p 2 ## 7 2 z 4
ベクトルの重複する要素を取り除く。
x <- c( 2, 4, 2, 5, 6, 7, 3, 5) unique(x)
## [1] 2 4 5 6 7 3
grepl(pattern, x)
grepl 関数は,文字列 x の中にパターン pattern があるかどうか調べる。
grepl("cde", "abcdefg")
## [1] TRUE
grepl("ceg", "abcdefg")
## [1] FALSE
パターンは正規表現で指定することができる。
直前の表現が 0 個または 1 個あることを示す。colou?r は color, colour の両方にマッチする。
grepl("colou?r", c("color", "colour", "colo5r"))
## [1] TRUE TRUE FALSE
直前の表現が0個以上あることを示す。gre*n は grn, gren, greeeeen などにマッチする。
grepl("gre*n", c("grn", "gren", "greeeeen"))
## [1] TRUE TRUE TRUE
直前の表現が1個以上あることを示す。gre+n は gren, green, greeeeen などにマッチするが grn にはマッチしない。
grepl("gre+n", c("grn", "gren", "greeeeen"))
## [1] FALSE TRUE TRUE
直前の表現がちょうど \(n\) 回繰り返される部分にマッチする。
grepl("gre{3}n", c("green", "greeen", "greeeen"))
## [1] FALSE TRUE FALSE
直前の表現が \(n\) 回以上繰り返される部分にマッチする。
grepl("gre{3,}n", c("green", "greeen", "greeeen"))
## [1] FALSE TRUE TRUE
直前の表現の \(n\) 回以上,\(m\) 回以下の繰り返しにマッチする。gre{3,5}nは greeen, greeeen, greeeeen にマッチする。
grepl("gre{3,5}n", c("green", "greeen", "greeeen", "greeeeen", "greeeeeen"))
## [1] FALSE TRUE TRUE TRUE FALSE
任意の文字にマッチする。.an は bank, can,fan などにマッチする。
grepl(".an", c("bank", "tangent"))
## [1] TRUE TRUE
正規表現で特別な意味を持つ記号を,本来の記号として使う(エスケープする)ためにその記号の前に付ける。たとえば,\? など。
grepl("3.4", c("123.45", "123a45"))
## [1] TRUE TRUE
# 3\.4 ではだめ。 \ 自身もエスケープしなければならない grepl("3\\.4", c("123.45", "123a45"))
## [1] TRUE FALSE
括弧内に含まれる1文字にマッチする。[awx] は a,w,x にマッチする。[a-z] は英小文字すべて,[0-9] は全ての数字にマッチする。
grepl("[awx]", c("game", "walk", "skip"))
## [1] TRUE TRUE FALSE
grepl("[a-z0-9]", c("ajhu", "789", "@#$%"))
## [1] TRUE TRUE FALSE
括弧内に含まれない1文字にマッチする。[^awx] は a,w,x 以外の 1 文字にマッチする。
grepl("[^awx]", c("awxx", "walk", "1234"))
## [1] FALSE TRUE TRUE
a または b にマッチする。
grepl("abc|def", c("hjabciu", "tydef98", "78khu"))
## [1] TRUE TRUE FALSE
グループ化する。
grepl("876(abc|def)99", c("876abc99", "876def99", "564abc34"))
## [1] TRUE TRUE FALSE
先頭にマッチする。^{}abc は先頭にある abc にマッチする。
grepl("^abc", c("abcde", "was abcx o"))
## [1] TRUE FALSE
末尾にマッチする。xyz$ は末尾の xyz にマッチする。
grepl("xyz$", c("xyzui", "ikj uvwxyz"))
## [1] FALSE TRUE