データ構造とデータ型の覚え書き。
データ構造
データ構造とは
データ構造とは、データがどのように入っているのかを定めるもの。
Rでは5種類のデータ構造がある。
- ベクトル (Vector)
- 行列 (Matrix)
- 配列 (Array)
- リスト (List)
- データフレーム (Data Frame)
ベクトル (Vector)
vector は1次元ベクトルとして値を格納する。
1つの vector には同じ型のデータしか格納できない。
ベクトル (Vector) の作り方。 ベクトル (Vector) とは Vector は1次元ベクトルとして値を格納する。 イメージは、「1列のデータセット」。 例えば、下記の場合、Boxの中にそれぞれ数値が入っている …
行列 (Matrix)
matrix は線形代数の行列と同じように、2次元配列に値を格納する。
行列 (Matrix) の作り方。 行列 (Matrix) とは matrix は線形代数の行列と同じように、2次元配列に値を格納する。 Matrix を作る 行を指定する場合 matrix を作る時は、行列に再構成する …
配列 (Array)
array は、3次元、4次元、5次元 ... n次元配列を作る。
array は matrix ほどカスタマイズ性に富んでいるわけではなく、基本的にdim属性を設定するのと同じ事になる。
第1因数として vector、第2因数として次元を示す dim を指定して呼び出す。
リスト (List)
List は1次元データだけれども、異なるデータ構造を複数個格納することができる。
例えば、matrix, vector, data frame, 数値などを混ぜて保存できる。
vector でも長さの違う vector を保存することも可能。
リストは異なるデータ構造を複数個格納することができるデータ構造の事。 Vector, Matrix, DataFrameなども混ぜて格納できる。 リスト (List) を作る list はlist()で作成する。 my_ …
データフレーム (Data Frame)
data frame は list の2次元バージョン。
データサイエンスで最も多く使用される。
data frame にはここのベクトルをまとめて2次元の表にする。
ここの vector は表の中の "列" になる。
それぞれの列は異なる型のデータを格納できるが、同じ列内は vector の性質を受け継ぐので、全てのセルが同じデータ型となる。
データフレーム (data frame) の作り方色々。 データフレーム (Data Frame) とは data frame は list の2次元バージョン。 データサイエンスで最も多く使用される。 data fra …
データ構造を調べる方法
データ構造を調べたり変換したりする場合は、下記関数が用意されている。
データ構造 | データ構造を調べる | データ構造を変換する |
---|---|---|
ベクトル (Vector) | is.vector() | as.vector() |
行列 (Matrix) | is.matrix() | as.matrix() |
配列 (Array) | is.arry() | as.array() |
リスト (List) | is.list() | as.list() |
データフレーム (Data Frame) | is.data.frame() | as.data.frame() |
データ型
データ型
ベクトルには下記6種類の基本データ型を認識する。
double : 倍精度浮動小数点数
通常の数値。
正でも負でも、大きな数でも小さな数でもOK。
小数点以下があってもOK。
integer : 整数
小数点以下のない整数。
整数は倍精度浮動小数点数型でも保存できるので、この整数型はあまり頻繁使う必要がない。
character : 文字
短い文字を格納する。
" " で囲まれた文字または文字列を入力して作る。
logical : 理論値
Rにおける論理値、TRUEとFALSEを格納する。
論理値は比較などをする時に役立つ。
complex : 複素数
複素数を格納する。
数値に i をつけた虚数項を追加する。
使用頻度は少ない。
raw : バイナリ
手が加えられていないデータバイトを格納する。
使用頻度は少ない。
データ型を調べる方法
データ型には以下の関数が用意されている。
データ型 | データ型を調べる | データ型を変換する |
---|---|---|
モード | mode() | storage.mode() |
実数 | is.numeric() | as.numeric() |
整数 | is.integer() | as.integer() |
倍精度浮動小数点数 | is.double() | as.double() |
複素数 | is.complex() | as.complex() |
文字列 | is.character() | as.character() |
論理値 | is.logical() | as.logical() |
順序なし因子 | is.factor() | as.factor() |
順序つき因子 | is.ordered() | as.ordered() |
Vector におけるデータ型の注意事項
1つの Vector の中に、複数の型を入れることはできず、どれかの型に統一される。
その大小関係は、
character > complex > numeric > logical > NULL
の順。
例えば、演算式中、実数値が期待されている時に論理値が現れたりすると、
- TRUE → 1
- FALSE → 0
のように変換される。
逆に、演算式中、論理値が期待されている時に実数値が現れたりすると、
- 0 でない数 → TRUE
- 0 → FALSE
のように変換される。
ここで、0でない数が全部 "TRUE" に変換されることに注意 (3.4 とかの数字でも "TRUE" になる。)。