« オリンピック・ミステリー:インド選手団に紛れていた赤い服の女 | トップページ | ラース・フォン・トリアー『メランコリア』を見てきた件 »

2012.08.01

Rのデータ操作入門(1):モード,リスト

Rを使いこなすためには,Rによるデータ操作法を学ぶことが最も重要である。

1. モード

データには数値(numeric),文字(character),論理値(logical),リスト(list, 後述)のようなモードがある。

あるオブジェクトxに,あるデータ(データ自体,オブジェクトなのであるが…)の集合を保存する場合,もっとも頻繁に使われるのがc関数である。c関数はベクトルの形でデータをオブジェクトに保存する。

たとえば,1, 2, 3, 4という数値データをxというオブジェクトに保存する場合,Rでは


> x = c(1, 2, 3, 4)

と命令する。

このとき,xに保存されたデータのモードを確かめるためにはmode関数を使用する。


> mode(x)
[1] "numeric"

このようにxの要素のモードは数値であることがわかる。

様々なモードのデータをc関数によって一つのオブジェクトに保存した場合,保存された要素のモードが統一される。例えば,


> y = c(1, 2, "cat", 4)

と命令した場合,yには数値データと文字データが混在したまま入力されるわけだが,mode関数でyに保存されたデータのモードを確かめると,


> mode(y)
[1] "character"

となり,すべての要素が文字に変換されたことが示される。実際,


> y
[1] "1" "2" "cat" "4"

となって,数値データが文字データになっていることがわかる。

c関数によって文字データと数値データをあるオブジェクトに保存した場合,そのオブジェクトの要素のモードは文字"character"となる。

c関数によって数値データと論理値データをあるオブジェクトに保存した場合,そのオブジェクトの要素のモードは数値"numeric"となる。

では,文字データと論理値データをあるオブジェクトに保存した場合はどうなるか?


> z = c("dog", "cat", TRUE)
> z
[1] "dog"  "cat"  "TRUE"
> mode(z)
[1] "character"

すなわち,オブジェクトの要素のモードは文字"character"となる。


2. ベクトル要素への名前付け

1.で例示したオブジェクトx, y, zはいずれもベクトルである。ベクトルの各要素にはnames関数によって名前を付けることができる。


> x =  c(1, 2, 3, 4)
> names(x) = c("alpha", "beta", "gamma", "delta")

または


> names(x) = c('alpha', 'beta', 'gamma', 'delta')

とすれば,ベクトルxの第1要素にはalpha,第2要素にはbeta,第3要素にはgamma,第4要素にはdeltaという名前が

つく。すなわち,


> x
alpha  beta gamma delta 
    1     2     3     4


3. リスト

リスト(list)はモードの異なる複数のデータを,それぞれのモードを変更せずに一つのオブジェクトに保存する場合に使う関数である。


> x = list(1, "dog", TRUE)
> x
[[1]]
[1] 1
[[2]]
[1] "dog"
[[3]]
[1] TRUE

リストはそれ自体,ひとつのモードである。


> mode(x)
[1] "list"

すなわち,list関数は,「モードの異なる複数のデータを,それぞれのモードを変更せずに結合する,リストというやり方」でオブジェクトをつくる関数である。


参考文献
P.スペクター著,石田基広・石田和枝訳『Rデータ自由自在(Data Manipulation with R)』(シュプリンガー・ジャパン)

|

« オリンピック・ミステリー:インド選手団に紛れていた赤い服の女 | トップページ | ラース・フォン・トリアー『メランコリア』を見てきた件 »

パソコン・インターネット」カテゴリの記事

R」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Rのデータ操作入門(1):モード,リスト:

« オリンピック・ミステリー:インド選手団に紛れていた赤い服の女 | トップページ | ラース・フォン・トリアー『メランコリア』を見てきた件 »