logo

Rでリストを参照するさまざまな方法 📂R

Rでリストを参照するさまざまな方法

概要

R はデータを扱うために多くの優れた機能を提供し、その中でもリストは R を使用する最大の理由の一つだ。Pythonをはじめとする他の言語にもリスト型は多く実装されているが、Rほどデータを扱いやすく直感的に実装されているわけではない。リストをうまく扱えるようになると、他のプログラミング言語ではやや複雑で面倒なコーディングも非常に簡単に行うことができる。

20190604\_161445.png

上記のように3つのシーケンスが1つのリストに属している状況を考えてみよう。基本的にはデータを調べたときに $이 있으면 데이터$名前 のように参照するのが正しい。しかし、名前が長すぎてすべて入力するのが面倒な場合や、コードが複雑になったり反復作業が必要な場合には、一々手書きで入力することはできない。

20190604\_161526.png 幸いにもリストはデータの名前が決まっていても、その順番に番号が割り当てられている。したがって上記のように単に数字で参照することもできる。

20190604\_161541.png 数字で参照できるということは、変数でも参照できるということだ。上記のようにループを作成しても正しく動作することが確認できる。

一方、ループはループだが、数字ではなく変数名で扱う方が便利なときもある。例えば気象データを40種類のリストにしたが、その中から「温度」と「湿度」だけを除外する場合がある。このような場合には文字列のインデックスを作成して処理する技術がよく使われる。幸いにもリストは データ$이름데이터$"名前" の両方を同じように受け入れるので、これにより柔軟なコードの作成が可能になる。実際、それだけでなく データ[[名前]] も可能だ。$ 記号はリストに限らずデータフレームなどでも使用されるので、複雑なデータを扱う場合は混乱しないように、リストにのみ使用する記号である [[]] を使用することを推奨する。

20190604\_161733.png

コード

sequence<-list(arithmetic=1:10,
               geometric=2^(1:10),
               alternative=1:10*rep(c(1,-1),5))
sequence
 
sequence$geometric
seqence[[2]]
 
for(i in 1:3){
  print(sum(sequence[[i]]))
}
 
sequence$"arithmetic"
for(i in c("arithmetic","alternative")){
  print(sequence[[i]])
}