Tech Blog

Information Technology / Machine Learning / Data Analysis / Big Data / System Integration

Rのデータ構造

Rのデータ構造が紛らわしいのでまとめておく。

データ構造 次元 制約
ベクトル 1次元 全要素は型が統一されている必要がある。
リスト 1次元 異なる型を保持できる。
順序なし因子 1次元 順序のないカテゴリを要素とする。
順序つき因子 1次元 順序のあるカテゴリを要素とする。
行列 2次元 全要素は型が統一されている必要がある。
データフレーム 2次元 各列の要素は型が統一されている必要がある。
配列 任意 全要素は型が統一されている必要がある。

自由度が高くなる(制約が少なくなる)につれて処理が遅くなるので注意。


ベクトル(vector)

  • 1次元データ型。全要素は型が統一されている必要がある。
> vec <- c(1,2,3)
> vec
[1] 1 2 3

リスト(list)

  • 異なる型を保持できる1次元データ型。
> lst <- list(1,c(1,2,3))
> lst
[[1]]
[1] 1

[[2]]
[1] 1 2 3

順序なし因子(factor)

  • 順序のないカテゴリを要素とした1次元データ型。
> fac <- factor(c("S","M","L","M"))
> fac
[1] S M L M
Levels: L M S

順序つき因子(ordered)

  • 順序のあるカテゴリを要素とした1次元データ型。
> ord <- ordered(c("S","M","L","M"),levels=c("S","M","L"))
> ord
[1] S M L M
Levels: S < M < L

行列(matrix)

  • 2次元データ型。全要素は型が統一されている必要がある。
> mat <- matrix(1:4,nrow=2,ncol=2)
> mat
     [,1] [,2]
[1,]    1    3
[2,]    2    4

データフレーム(data frame)

  • 2次元データ型。各行の要素は型を統一しなくてよいが、各列の要素は型が統一されている必要がある。ファイル読み込み時にデフォルトで使用される。
> df <- data.frame(col1=c(1,2),col2=c("a","b"))
> df
  col1 col2
1    1    a
2    2    b

配列(array)

  • 次元数が任意のデータ型。全要素は型が統一されている必要がある。
> arr <- array(1:8,dim=c(2,2,2))
> arr
, , 1

     [,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8