をプログラムとして見たときに注意・検討すべきところを学んでおきたい、ということで
を読んでいく。
前回
4. リスト
の構造はさまざまな種類のオブジェクトを結合できる。
4.1 リストの作成
厳密にはリストはベクトルである。通常のベクトルは成分を小さな成分に分割できないため、アトミックベクトルという。それに対してリストは再帰ベクトルと呼ぶ。
リストは以下のように作成できる。リスト成分はインデックスでも名前でも指定可能である*1。
# list()による作成 j <- list(name = "Joe", salary = 500, union = T) j # vectorでも作成可能 z <- vector(mode = "list") z[["abc"]] <- 3 z
ここでのなどの成分名*2は省略可能である。
4.2 一般的なリスト操作
4.2.1 リストのインデックス付け
リストの各成分へのアクセス方法はさまざまである。たとえばリストの2番目の成分へのアクセス方法には以下がある:
j$salary j[["salary"]] j[[2]]
リストをベクトルのように扱って参照する場合、二重角かっこを用いる点に注意する。もし一重の角かっことすると、その保有値をリストとして返す。
4.2.2 リスト要素の追加と削除
リストへの要素追加は、リスト・オブジェクトが既にあるという前提で行うことができる。
z <- list(a = "abc", b = 12) z$c <- "sailing" # cというタグ名の"sailing"を成分として追加 z
要素を削除するにはその要素にを追加する(書き換える)。
z$c <- NULL z
4.2.3 リストサイズの取得
リストはベクトルであるため、関数でリストの成分数を取得できる。
z <- list(a = "abc", b = 12) length(z)
4.3 リストの成分と値へのアクセス
リストの成分にタグが付けられている場合、関数を用いてタグを取得できる。値を取得するには関数を用いる*3。
j <- list("name" = "Joe", "salary" = 55000, "union" = F) # タグ名の取得 names(j) # 値の取得 unlist(j)
4.4 リストへの関数の適用
リストの各成分に関数を適用するには、関数と関数が利用できる。これらは戻り値がリストかまたはベクトル(行列)かという相違がある。