R logo

データ構造とデータ型の覚え書き。

データ構造

データ構造とは

データ構造とは、データがどのように入っているのかを定めるもの。

Rでは5種類のデータ構造がある。

  • ベクトル (Vector)
  • 行列 (Matrix)
  • 配列 (Array)
  • リスト (List)
  • データフレーム (Data Frame)

データ構造

ベクトル (Vector)

vector は1次元ベクトルとして値を格納する。

1つの vector には同じ型のデータしか格納できない。

行列 (Matrix)

matrix は線形代数の行列と同じように、2次元配列に値を格納する。

配列 (Array)

array は、3次元、4次元、5次元 ... n次元配列を作る。

array は matrix ほどカスタマイズ性に富んでいるわけではなく、基本的にdim属性を設定するのと同じ事になる。

第1因数として vector、第2因数として次元を示す dim を指定して呼び出す。

リスト (List)

List は1次元データだけれども、異なるデータ構造を複数個格納することができる

例えば、matrix, vector, data frame, 数値などを混ぜて保存できる。

vector でも長さの違う vector を保存することも可能。

データフレーム (Data Frame)

data frame は list の2次元バージョン。

データサイエンスで最も多く使用される。

data frame にはここのベクトルをまとめて2次元の表にする。

ここの vector は表の中の "列" になる。

それぞれの列は異なる型のデータを格納できるが、同じ列内は vector の性質を受け継ぐので、全てのセルが同じデータ型となる。

データ構造を調べる方法

データ構造を調べたり変換したりする場合は、下記関数が用意されている。

データ構造 データ構造を調べる データ構造を変換する
ベクトル (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" になる。)。

References