1.4 データ構造(3)リスト

ベクトルは単一のデータ型しか保持できませんが、異なるデータ型のベクトルの集まりを1つのオブジェクトとして扱えるデータ構造をリストといいます。リストは、ベクトルだけでなく、別のリストも要素として持つことができます。

season <- 2013
pacific <- c("楽天", "西武", "ロッテ", "ソフトバンク", "オリックス", "日本ハム")
central <- c("巨人", "阪神", "広島", "中日", "DeNA", "ヤクルト")
npb <- list(pacific = pacific, central = central, season = season)
npb
## $pacific
## [1] "楽天"         "西武"         "ロッテ"       "ソフトバンク" "オリックス"  
## [6] "日本ハム"    
## 
## $central
## [1] "巨人"     "阪神"     "広島"     "中日"     "DeNA"     "ヤクルト"
## 
## $season
## [1] 2013

リストを新たに作成するにはlist()関数を用います。引数は、要素の参照名 = オブジェクトをカンマ区切りで列挙します。リストのオブジェクト名の後に$要素の参照名をつけて実行すると、指定したリストの要素を直接参照できます。例えば、

npb$pacific
## [1] "楽天"         "西武"         "ロッテ"       "ソフトバンク" "オリックス"  
## [6] "日本ハム"

また、npb[[1]]のようにすれば、要素番号でリストの要素を参照することもできます。

npb[[2]]
## [1] "巨人"     "阪神"     "広島"     "中日"     "DeNA"     "ヤクルト"

以下のようにして、文字列として参照名を指定することもできますが、この場合の結果はリストとなります。

npb["central"]
## $central
## [1] "巨人"     "阪神"     "広島"     "中日"     "DeNA"     "ヤクルト"
typeof(npb["central"])
## [1] "list"

統計計算などを行うRの関数の多くは、その結果をリストの形式で返します。リストの要素の参照名の一覧を見るにはnames()関数を用います。

names(npb)
## [1] "pacific" "central" "season"

また、リストの構造を見たい場合は、str()関数を用います。

str(npb)
## List of 3
##  $ pacific: chr [1:6] "楽天" "西武" "ロッテ" "ソフトバンク" ...
##  $ central: chr [1:6] "巨人" "阪神" "広島" "中日" ...
##  $ season : num 2013