餡子付゛録゛

ソフトウェア開発ツールの便利な使い方を紹介。

Rのリスト処理のざっとした説明

説明用です。他のプログラミング言語連想配列/マップ/ハッシュと同様に使えるわけですが、[ ]と[[ ]]の使い分けがややこしいですね。

# 空リストを作成
lst <- list()

# リストを作成
lst <- list("a"=123, "b"=456, "c"=789)

# ベクターをリストに変えて、名前をつけてもよい
lst <- as.list(c(123, 456, 789))
names(lst) <- c("a", "b", "c")

# 1番目だけを抽出したリストを作る
sub_1 <- lst[1]

# "b"と"c"のリストを作る
sub_bc <- lst[c("b", "c")] 

# 2番目の要素を得る
lst[[2]]

# 3番目の要素を得る
getElement(lst, 3)

# "a"の要素を得る
lst[["a"]]

# "d"を追加する
lst["d"] <- 0

# "b"を消す
lst["b"] <- NULL

# 名前"d"の要素が含まれているか調べる
if(!is.null(lst[["d"]])) print("名前dの要素は無い")

# 名前のベクトルを得る
names(lst)

# 要素のベクトルを得る
unlist(lst)

# リストの長さを得る
length(lst)

# 全部の要素から17を引いたリストをつくる
lst_minus_17 <- lapply(lst, function(x){ x - 17 })

# 全部の要素に31を足したベクトルを得る
vector_plus_31 <- sapply(lst, function(x){ x + 31 })

# ベクトルのリストをつくる
vlst <- list("a"=c(1, 2, 3), "b"=c(4, 5, 6), "c"=c(7, 8, 9))

# リストの各要素の2番目の値を取り出す
sapply(vlst, "[[", 2) # "[["はgetElementでもOK

# リストの各要素の3番目の値だけで、リストを作りなおす
vlst_sub <- lapply(vlst, "[[", 3)