Vector、Matrix、DataFrame、List etc. から [] (square brackets) を使って特定の要素へアクセスする方法。
ベクトル (Vector) の場合
Vectorを作る。
v <- c("a","b","c","d","e")
v
output
[1] "a" "b" "c" "d" "e"
このVectorの場合、左から1,2,3,4,5となる。
(Rは他のプログラミング言語と違い、0ではなく1から始まる。)
ベクトル (Vector) の作り方。 ベクトル (Vector) とは Vector は1次元ベクトルとして値を格納する。 イメージは、「1列のデータセット」。 例えば、下記の場合、Boxの中にそれぞれ数値が入っている …
一つ要素にアクセス
このVectorの中の "a" にアクセスしたい場合は、
v[1]
output
[1] "a"
"c" (左から3番目) にアクセスしたい場合は、
v[3]
output
[1] "c"
特定の要素 "以外" の要素にアクセス
このVectorの中の "a" 以外にアクセスしたい場合は、
v[-1]
output
[1] "b" "c" "d" "e"
まとめてアクセス
このVectorの中の "a,b,c" に連続してアクセスしたい場合は、
v[1:3]
output
[1] "a" "b" "c"
"c,d,e" なら
v[3:5]
output
[1] "c" "d" "e"
飛び飛びにアクセス
飛び飛びに "c,d,e" へアクセスしたい場合は、
v[c(1,3,5)]
output
[1] "a" "c" "e"
これは、"b"と"d"以外、という意味でもあるから、下記と同じ。
v[c(-2,-4)]
output
[1] "a" "c" "e"
ある値以上(以下)の数値にアクセス
数値でVectorを構成する。
v2 <- c(1,2,3,4,5,6,7,8,9,10)
v2
output
[1] 1 2 3 4 5 6 7 8 9 10
このVectorの5より上の数値にアクセスしたい場合は
v2 <- c(1,2,3,4,5,6,7,8,9,10)
v2[v2 > 5]
output
[1] 6 7 8 9 10
5より下の数値にアクセスしたい場合は
v2 <- c(1,2,3,4,5,6,7,8,9,10)
v2[v2 < 5]
output
[1] 1 2 3 4
5以上の数値にアクセスしたい場合は
v2 <- c(1,2,3,4,5,6,7,8,9,10)
v2[v2 >= 5]
output
[1] 5 6 7 8 9 10
5以下の数値にアクセスしたい場合は
v2 <- c(1,2,3,4,5,6,7,8,9,10)
v2[v2 <= 5]
output
[1] 1 2 3 4 5
行列 (Matrix) の場合
Matrixを作る。
m <- matrix(1:6, ncol=2)
m
output
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
今回は、ncol で列数を2に設定したので、3行、2列のMatrixができた。
行列 (Matrix) の作り方。 行列 (Matrix) とは matrix は線形代数の行列と同じように、2次元配列に値を格納する。 Matrix を作る 行を指定する場合 matrix を作る時は、行列に再構成する …
行列の特定の要素へアクセス
Matrixの場合、2次元なので、[行,列]で要素にアクセスする。
上記Matrix "m" の1行目かつ2列目の要素 "4" へアクセスしたい時は、
m[1,2]
output
[1] 4
1行目と3行目の2列目アクセスしたい時は、
m[c(1,3),2]
output
[1] 4 6
行、列でアクセス
2行目にアクセスしたい時は、
m[2,]
output
[1] 2 5
2列目にアクセスしたい時は、
m[,2]
output
[1] 4 5 6
1行目と3行目アクセスしたい時は、
m[c(1,3),]
output
[,1] [,2]
[1,] 1 4
[2,] 3 6
Matrixを維持して要素にアクセス
Matrixから特定の行や列だけ取り出すと、Vectorで返ってくる
m[,2]
output
[1] 4 5 6
この時Matrixを維持したい時は、
drop = FALSE
をつける。
m[,2, drop = FALSE]
output
[,1]
[1,] 4
[2,] 5
[3,] 6
Matrixに行名や列名をつけて要素にアクセス
Matrixに行名と列名をつける。
m <- matrix(1:6, ncol=2)
colnames(m) <- c("Apple", "Banana")
rownames(m) <- c("alpha", "beta", "gamma")
m
output
Apple Banana
alpha 1 4
beta 2 5
gamma 3 6
ここから "beta" の行を取り出したい時は、
m["beta",]
output
Apple Banana
beta 2 5
"alpha" と "gamma" の行を取り出したい時は、
m[c("alpha","gamma"),]
output
Apple Banana
alpha 1 4
gamma 3 6
"Apple" の列を取り出したい時は、
m[,"Apple"]
output
alpha beta gamma
1 2 3
Matrixを維持して "Apple" の列を取り出したい時は、
m[,"Apple", drop = FALSE]
output
Apple
alpha 1
beta 2
gamma 3
データフレーム (DataFrame) の場合
DataFrameを作る。
今回は上記Matrix(m)をDataFrame(df)に変換。
df <- as.data.frame(m)
df
本当にDataFrameになったかどうかは、
is.data.frame()
で確認できる。
is.data.frame(df)
output
[1] TRUE
is.matrix(df)
output
[1] FALSE
最初から作る場合は、
data.frame()
で作る。
df <- data.frame(
Apple=c(1,2,3),
Banana=c(4,5,6)
)
rownames(df) <- c("alpha","beta","gamma")
df
データフレーム (data frame) の作り方色々。 データフレーム (Data Frame) とは data frame は list の2次元バージョン。 データサイエンスで最も多く使用される。 data fra …
行番号、列番号でアクセス
Matrixと同じように、[行番号,列番号]でアクセスできる。
1行目にアクセス
df[1,]
1列目にアクセス
df[,1]
output
[1] 1 2 3
1行目/1列目にアクセス
df[1,1]
output
[1] 1
行名、列名でアクセス
番号ではなく、行名や列名でも養素にアクセスできる。
1行目(alpha)にアクセス
df["alpha",]
1列目(Apple)にアクセス
df[,"Apple"]
output
[1] 1 2 3
1行目(alpha)/1列目(Apple)にアクセス
df[1,1]
output
[1] 1
列をVectorにしてアクセス
[[ ]] (double square brackets) を使うと、列をVectorとしてアクセスできる。
1列目(Apple)にアクセス
df[[1]]
output
[1] 1 2 3
df[["Apple"]]
output
[1] 1 2 3
※ 行には使えない。
df[["alpha"]]
output
[1] NULL
リスト (List) の場合
List を作る。
リストは異なるデータ構造を複数個格納することができるデータ構造の事。
Vector, Matrix, DataFrameなども混ぜて格納できる。
my_list <- list(
v=c(1,2,3,4,5,6),
v2=c("a","b","c"),
m=matrix(1:6, ncol=2),
df=data.frame(
Fruit=c("Apple","Banana","Orange"),
Number=c(11,12,13),
Country=c("Japan","USA","China")
)
)
my_list
output
$v
[1] 1 2 3 4 5 6
$v2
[1] "a" "b" "c"
$m
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
$df
リストは異なるデータ構造を複数個格納することができるデータ構造の事。 Vector, Matrix, DataFrameなども混ぜて格納できる。 リスト (List) を作る list はlist()で作成する。 my_ …
Listは、アクセス方法によって戻り値がList型かリストに格納されているデータ構造になるかが異なる。
[ ] 戻り値がリスト型
[ ] (single square brackets) を使うと、戻り値はリスト型になる。
my_list[1]
my_list[2]
my_list[3]
my_list[4]
output
> my_list[1]
$v
[1] 1 2 3 4 5 6
> my_list[2]
$v2
[1] "a" "b" "c"
> my_list[3]
$m
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> my_list[4]
$df
class(my_list[1])
class(my_list[2])
class(my_list[3])
class(my_list[4])
output
> class(my_list[1])
[1] "list"
> class(my_list[2])
[1] "list"
> class(my_list[3])
[1] "list"
> class(my_list[4])
[1] "list"
[[ ]] 戻り値が格納されているデータ構造型
[[ ]] (double square brackets) を使うと、戻り値は格納されているデータ構造の型になる。
my_list[[1]]
my_list[[2]]
my_list[[3]]
my_list[[4]]
output
> my_list[[1]]
[1] 1 2 3 4 5 6
> my_list[[2]]
[1] "a" "b" "c"
> my_list[[3]]
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> my_list[[4]]
class(my_list[1])
class(my_list[2])
class(my_list[3])
class(my_list[4])
output
> class(my_list[[1]])
[1] "numeric"
> class(my_list[[2]])
[1] "character"
> class(my_list[[3]])
[1] "matrix" "array"
> class(my_list[[4]])
[1] "data.frame"
List の中の各データ構造内の要素にアクセス
例えば、上記 my_list の3番目の matrix 内の1行目2列目にアクセスしたい場合は、
my_list[[3]][1,2]
output
[1] 4
References
Rのmatrix入門 matrixをつくる データからmatrixを作る matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) ...
R List入門 リストは異なるデータ構造を複数個格納することができるデータ構造のこと。例えば、matrix, ベクトル, データフレーム, 数値などを混ぜて保存できる。 リストを作る list関数を使ってつくる x &...