R入門」

「R入門」
第6章:リストとデータフレーム
10月23日発表
藤井 丈明
6.1リスト
リスト(list)
・オブジェクトの順序付けられた集まりからなるオブジェクト
・成分(component):個々の成分オブジェクト
・成分は同じモード、型である必要はない
Ex:Lst<-list(name=“Fred”, wife=“Mary”, no.children=3,
child.ages=c(4,7,9))
成分
・成分は常に「順番が付けられ」、常にそれで参照できる
Ex:Lst[[1]] <“Fred”
・length(Lst)はLstが含む成分(トップレベル)の個数を与える
リストの成分(鈎括弧と二重鈎括
弧)
Lst[[…]]とLst[…]の区別は非常に重要
[[…]] :1つの要素を抜き出す演算子
[…] :一般的な添字指定演算子
Ex :Lst[[1]]
Lst[1]
> “Fred”
>$name “Fred”
[[…]]では成分の値のみが表示される
[…] では成分の値とその名前が表示される
リストの成分(名前の付与)
リストの成分には名前を与えることが出来、その名前を
用いて成分の値を得ることが出来る
Ex:Lst$name
<“Fred”
Lst[[1]]
Lst$wife
<“Mary”
Lst[[2]]
Lst$child.ages[1]
<4
Lst[[4]][1]
リスト成分の名前を二重鈎括弧の中に使うことも可能
Lst$name
Ex:Lst[[“name”]] <“Fred”
Lst[[1]]
成分の名前は、特定できる最小の値に省略可能
Ex:Lst$coefficients
Lst$coe
Lst$covariance Lst$cov
名前のベクトル
実際には他と同様単にリストの属性
6.2 リストを作る、変える
list()
・すでに存在するオブジェクトから新しいリスト生成可能
Ex:Lst<-list(name_1=object_1,…name_m=object_m)
・リストを形成する成分は新しいリストを作る際に「コピー」さ
れ、オリジナルは変化しない
リストの追加
他の添字を持つオブジェクト同様、追加の成分を指定して
拡張可能 Ex : Lst[5]<-list(pet=“cat”)
・しかしこの形式では“cat”は追加されるが名前(pet)は追
加されない。名前の追加にはnames関数を使う
Ex: names(Lst)[[5]]<-c(“pet”)
< $pet cat
6.2.1 リストの結合
リスト結合
連結関数c()がリストの引数を与えられると、結果はリスト
モードのオブジェクトになり、成分は引数リストが順につ
なげられたものになる
Ex:listA<-list(2,3,4)
listABC<-c(listA,listB,listC)
listB<-list(5,5)
< 2,3,4,5,5,7,8,9,0
listC<-list(7,8,9,0)
*ベクトルオブジェクトを引数にとった場合、他の全ての属性
は捨てられる
課題
自分の家族構成のリストを作成
Ex: Lstfujii<-list(name=“takeaki”,titi=“kazuo”,haha=“reiko”,
ane=“mai”,sobo=“hiroe”)
そのリストに今まで飼ったペットの名前を追加。なかっ
たらNULLを追加(名前ベクトルも追加する)
Ex:Lst[6]<-list(pet=“cat”)
研究室のメンバーの表示されたリストを作り、家族構成
のリストと結合