RStudioを使って、図を表示したり、ファイルの読み書きを行ったりします。
Rにはパッケージを導入し、機能を拡張する仕組みが備わっています。様々なパッケージが用意されていますので、これらを使いこなせば、簡単に高機能を実現できます。RStudioには、パッケージをインストールしたり、アップデートしたりするインタフェースが提供されています。Rのパッケージには、主に1) Rのインストールで自動的に導入され、使用できるもの、2) Rのインストールで自動的に導入されるが、読込み手続きが必要なもの、3) 別途インストールが必要になるものがあります。
RStudioの右下の枠にPackagesを表示できるようになっており、インストール済みのパッケージが一目瞭然です。
> library()
とコマンド入力しても、同様にインストール済みパッケージが表示されます。
> search()
とコマンド入力すると、読込み済みのパッケージが表示されます。
例えば、MASS(Modern Applied Statistics with Sの頭文字をとった)というパッケージがあります。パッケージMASSはRのインストール時に自動的に導入されますが、その利用には読込み手続きが必要です。そのため、library()で表示されるが、search()では見当たらないといったことになります。パッケージMASSを読み込むには、
> library(MASS)
とコマンド入力します。
> install.packages(パッケージ名)
をコマンド入力して、パッケージをインストールします。このとき、パッケージの中の関数を利用するために、他のパッケージが必要になる場合があります。Install.packages()の引数に、dependencies = TRUEを加えると、この依存関係にあるパッケージが同時にインストールされます。
データをファイルに書き出すには、関数write.table()とかwrite.csv()を用います。両者の違いは、write.table()がデータを空白で区切り、write.csv()がデータをカンマで区切ることです。いずれも、標準では各行の先頭に行番号が付与されます。
> keiyaku <- data.frame( tsuki = c("Jan","Feb","Mar"), sinki = c(400,600,750), kaiyaku=c(200,300,450))
> keiyaku
tsuki sinki kaiyaku
1 Jan 400 200
2 Feb 600 300
3 Mar 750 450
>
空白で区切るデータファイルを作成するには、
> write.table(keiyaku, "keiyaku.txt")
カンマ(,)で区切るデータファイルを作成するには、
> write.csv(keiyaku, "keiyaku.csv")
と入力します。
データをファイルから読み込むには、関数read.table()とかread.csv()を使います。read.table()は、データが空白で区切られたファイルを読み込みます。read.csv()は、データがカンマで区切られたファイルを読み込みます。両者では、データの各行の先頭の扱いが異なります。read.table()では各行の名前として読み込まれ、read.csv()ではデータの一部として読み込まれます。read.csv()で各行の先頭を行の名前に設定するには、row.namesオプションを使います。
> keiyaku01 <- read.table("keiyaku.txt")
> keiyaku01
tsuki sinki kaiyaku
1 Jan 400 200
2 Feb 600 300
3 Mar 750 450
> keiyaku02 <- read.csv("keiyaku.csv", row.names=1)
> keiyaku02
tsuki sinki kaiyaku
1 Jan 400 200
2 Feb 600 300
3 Mar 750 450
>
Rを操作したり、ファイルを読み書きしたりするディレクトリは、作業ディレクトリといいます。右下枠のメニューにある「Files」をクリックすると、「New Folder」「Delete」「Rename」「More」というメニューが表示されますので、Moreの「Go to Working Dictionary」を選択します。表示されたファイルやフォルダーは、作業ディレクトリの中にあるものです。
データが羅列されていても、それが意味するところを理解するのは難しいものです。Rには多彩な作図機能が備えられており、用途に応じた描画ができます。
基本的なプロットを行う関数としてplot()があります。同じ個数のデータが2つあれば、各データの要素を組として点(x, y)をプロットします。これは、一般には散布図と呼ばれます。
(乱数の数値は異なる場合がある)
> (x <- rnorm(10)) # 10個の乱数をxに代入する
[1] 0.1399453 1.3601099 1.2217053 -1.0583336 -0.1619538
[6] -0.5739459 0.1624500 1.0211791 0.2334685 -0.3793647
> (y <- rnorm(10)) # 10個の乱数をyに代入する
[1] 0.943692816 -2.163096436 -0.330089011 0.136052917
[5] 1.868071534 0.071215874 1.017841573 0.751609206
[9] -0.186333568 0.008610057
> plot(x,y) # x,yをプロットする
プロットにおいて点や線の種類を指定するには、オプションにtypeを使います。type = 'p'で点を、type = 'l'(エル)で線を描画します。オプションを指定する文字列には、'(シングルクォート)か、"(ダブルクォート)が要ります。以下は、二次関数を点列で描く例です。
> x <- seq(0,10,by = 0.5)
> y <- x^2-2*x
> plot(x, y, type = "l")
plot()で描画した図に、点や線を描き足すこともできます。点を描き足すにはpoints()を、線を描き足すにはlines()を使います。このとき、太さを変えるならオプションlwdを指定し、色を変えるならオプションcolを指定します。
> x <- seq(0, 5, by = 0.1)
> y <- x^3 - 5 * x^2 + 2 * x + 5 + rnorm(length(x))
> plot(x, y)
> lines(x, x^3 - 5 * x^2 + 2 * x + 5, lwd = "2", col = "red")
ヒストグラムを表示するには、関数hist()を使います。ヒストグラムは、その値の度数を数えたものの分布です。ここでは、標準正規分布に従う100個の乱数を発生させています。乱数はその都度異なる値となるので、ヒストグラムも違ってきます。
> x <- rnorm(100)
> hist(x)
多変量データは多次元であり、すべてのデータをプロットするには工夫が要ります。二次元平面に射影した表示形式なら、pairs()が使えます。
> x <- rnorm(100)
> y <- 2*x + rnorm(100)
> z <- x - y + 0.5 * rnorm(100)
> pairs(data.frame(x, y, z))