読者です 読者をやめる 読者になる 読者になる

山羊の午後

研究関係の備忘録。

Rのはじめ方 2:使い方 入力と出力

 Rの動作をおぼえるために、とにかく使ってみましょう。
 基本的な動作はコマンドを入力して、結果を出し、保存する、この三つだけです。

入力する

 
 Rを起動して出てくるウィンドウには「R Console」と名前がついています。このコンソールが、Rに命令文(コマンド)を入力する場所です。


 Consoleのウィンドウをクリックして、下の赤い>横にカーソルを合わせます。
 ここで「コマンドを書き、エンターを押す」ことでRに命令文をつたえます。


 まず、下の二行をコピぺして、コンソールに入力しましょう。

data(iris)
head(iris)

 エンターを押すと、下記のように表示されます。

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
  • コンソールでは 命令文は赤い文字、 結果は青い文字で表示されます。


 ここでは関数data() でRに内蔵されているデータセット「iris」を読み込み、その先頭部分を 関数head() を使って表示しました。
 irisのデータセットはアヤメの三品種を比較した実際のデータです*1


 では次にグラフを作ってみましょう。
 グラフの描画には関数plot()をつかいます。下記をコピペしてコンソールに入力します。

plot(iris$Species, iris$Sepal.Length)

 円たーを押すと下図のようにグラフができます。

 これはアヤメの三品種(Species)における、がく片の長さ(Sepal.Length)の平均とばらつきを示す箱ひげ図です。

 関数 plot(データ1, データ2) は入力されたデータ1をx軸、データ2をy軸としてグラフを描きます。

 ここでは、x軸に iris$Species 、y軸に iris$Sepal.Length を入力しています。

 これはそれぞれ、表 iris の 列名 Species (品種名)、と 列名 Sepal.Length (がく片の長さ)を指定する書き方です。 表iris の 列Species を iris $ Species と書くわけです。$をつかったデータの指定は頻出しますので、慣れてください。

$マーク
データ表の中で名前の付けられた一列を指定する。表名$列名。


f:id:yk_uminami:20160423210255p:plain



 関数 plot(データ1,データ2) は入力されたデータ1をx軸、データ2をy軸としてグラフを描きます。
 そのため、二つのデータの順番を入れ替えて入力すると、異なるグラフが描かれます。

plot(iris$Sepal.Length, iris$Species)

f:id:yk_uminami:20160424011625p:plain

 x軸にがく片の長さ(iris$Sepal.Length)、y軸にアヤメの品種(iris$Species)が入力されたグラフができました。

 でも前回は箱ひげ図になったのに、今回は点でプロットされています。なぜでしょう?


 これは iris$Species が品種名の入力された「文字型」のデータ*2
であるせいです。


 関数plot()には「x軸に文字型が入力された場合は、それぞれの群ごとに箱ひげ図を描く」と定義されています。しかし、y軸方向では文字の扱いは定義されていません。

 そのため、上のグラフを見ると、y軸には品種の違いに応じて一番目の品種、二番目の品種、三番目の品種、と適当な「数字」に変換されて軸が描かれています。

 これではいったい何のグラフなのかわかりません。。。


 正しいグラフを描くためには、関数plot(x軸データ、y軸データ)がもつ入力ルールにおぼえておかねばいけません。Rに習熟する労力の大半は、この コマンドの書き方を覚える ことです。

 それぞれの関数がもつ入力ルールは help(関数名) を使えばオンライン上のマニュアルが参照できます。(ただし英語)
 また、関数名+R で検索すれば、大抵のものは日本語での解説をみつけることができます。



グラフを出力する

 グラフを保存してみましょう。方法は三つあります。

グラフの上で右クリック

メタファイルに保存
.emf形式で画像を保存します。ベクター画像であるため、拡大縮小してもきれいです。パワポに貼ったりするならこちらで保存します。ウィンドウズ以外での互換性に注意が必要です。
ポストスクリプトファイルに保存
.eps形式で画像を保存します。ラスター画像であるため、ややぼわっとしますが、編集が容易だったり、互換性が確かだったりします。

メニューバーの「ファイル」から「別名で保存」を選択

  • Metafile (.emf)、Postscript(.eps)、PDF、PngBmpTIFFJpeg の各形式で保存できます。
  • 「別名で保存」が見つからないときは、グラフのウィンドウ「R Graphics: Device 2」をクリックしてからメニューバーを開きます。(選択されているウィンドウごとにメニューバーの内容が変わります。)

コンソールから命令する

  • 下記を実行すると、PDF形式で現在のフォルダに保存されます。(初期設定ではマイドキュメント。)*3
dev.copy2pdf(file = "test.pdf")



統計解析結果を出力する

 続いて、このデータで統計解析もしてみましょう。
 がく片の長さが三品種の間で有意に違うかを、分散分析で検討します。

oneway.test(iris$Sepal.Length~iris$Species)


 実行すると下記のようにF検定の結果が出力されます。

        One-way analysis of means (not assuming equal variances)

data:  iris$Sepal.Length and iris$Species
F = 138.9083, num df = 2.000, denom df = 92.211, p-value < 2.2e-16

 P値が十分に小さい(0.001以下*4)ので、これらの三品種の間で、がく片の長さに有意に違いがある、といえます。

 コンソールウィンドウの結果をマウスで選択してメモ帳やワードにコピペして保存しておきます。


 では最後に、ここまで入力した命令文を保存しておきましょう。

history()

 と入力すると、「R History」のウィンドウが開きます。
 ここまで入力したコマンドが一覧されていると思います。

 これをメニューバーの「ファイル」から「ファイルを保存」でテキストファイル(.txt)として保存します*5


 次に使うときは「ファイル」から「スクリプトを開く」でテキストファイルを開きます。これで、一度使ったコマンドを再利用することができます。


 ここまでが、Rでやることの一連の流れです。
 それぞれの関数の使い方をおぼえるのは厄介ですが、しかし、すべてを丸暗記する必要はありません。適宜、テキストファイルにメモを取っておけば便利です。

 つぎはコマンドをメモしたテキストファイル、スクリプトの使い方を説明します。


初歩のTips

  • コンソール入力場所で ↑キーを押す 一つ前に入力したコマンドを表示
  • コンソール入力場所で 変数、関数名を途中まで入力してtabキーをおす 残りの入力が保管される。(複数ある場合は一覧が出る)

*1:irisの正体 (R Advent Calendar 2012 6日目) - どんな鳥も

*2:詳しくはyaginogogo.hatenablog.jp

*3:現在のフォルダを変更するには「ファイル」から現在のディレクトリを変更を選択。

*4:2.2e-16は指数表記で、2.2 × 10のマイナス16乗をしめす。とても小さい、くらいの認識

*5:打ち間違いの行はあとで消しましょう