R環境の構築と基本操作

今回の内容

R環境の構築

Rとは

Rは、ニュージーランドのオークランド大学統計学科のRoss Ihakaと、アメリカのハーバード大学生物統計学科のRobert Gentlemanにより開発がはじめられ、1997年からは多くの賛同者により開発が続けられているオープンソース方式のデータ解析・処理の専用ソフトウエアである。

R言語は見かけ上S言語と差異がないため、S言語のクローンまたは方言とみなされている。Rは主なデータ解析ソフトSAS, SPSS, S言語, Excel, プログラム言語であるC言語やFORTRAN言語、データベース管理システムであるSQLなどとのインターフェイスがライブラリとして実装されている。そのため、R言語上から他言語を呼び出したし、他言語で作成されたデータにアクセスすることが可能である。

また、Linux, Windows, Macなど主要なOSに対応しており、OSに依存しないでR言語で書いたコンピュータプログラムを相互に利用することができる(ただし、日本語の取り扱いについてはOSに強く依存するため言語のコード設定に強く依存しないプログラミングが望ましい)。

R言語の本家サイトは

http://www.r-project.org/

である。このサイトからRの各OSのインストーラーをダウンロードして、インストールすることができる。

Rのインストール

Rのインストールを行う方法について述べる。Rのインストールは対応するパッケージをダウンロードすることで実行する。OSごとにインストールの方法が若干異なるので、各種OSごとにインストール方法について説明する。

Rのインストーラーは

https://cran.r-project.org/mirrors.html

にあるミラーサイト一覧から探す。我々は日本からアクセスするので、統計数理研究所と山形大学のミラーサイトが近いサイトである。

https://cran.ism.ac.jp/ The Institute of Statistical Mathematics, Tokyo
https://ftp.yz.yamagata-u.ac.jp/pub/cran/ Yamagata University

Windowsの場合

Windows版のインストーラー情報ページ

https://cran.ism.ac.jp/bin/windows/

から最新版のWindows版Rインストーラーをダウンロードする。2020年7月現在では

https://cran.ism.ac.jp/bin/windows/base/R-4.0.2-win.exe

がR4.0.2の最新版インストーラーである。インストーラーをダウンロードの後、実行し指示に従って順次すすめることでインストールが完了する。

Macの場合

Mac版のインストーラー情報ページ

https://cran.ism.ac.jp/bin/macosx/

から最新版のMac版Rインストーラーをダウンロードする。2020年7月現在では

https://cran.ism.ac.jp/bin/macosx/R-4.0.2.pkg

がR4.0.2の最新版インストーラーである。インストーラーをダウンロードした後、実行し指示に従って順次すすめることでインストールが完了する。

Linuxの場合

Linux版のインストールはUbuntuやCentOSでは、以下のパッケージをインストールすることで利用が可能となる。

Ubuntu/Debian

$ sudo apt-get install r-base

CentOS/Red Hat

$ sudo yum -y install r-base

利用したいライブラリに応じてr関連のパッケージを追加でインストールすると使うことができる。

Rの起動と終了

デスクトップのRのショートカットアイコンをクリックするとWindows版では以下のような画面が表示される。

あるいはコマンドラインから

$ R

と入力することにより、Rをコンソール上で実行することができる。コンソールの終了には

> q()

と入力する。

RStudioのインストール

上述のR(3.0.1以上)をインストールしていることを前提として、各種管理機能を強化したIDE (Integrated Development Environment)としてRStudioがある。RStudioはオープンソース版と商用版とがある。

オープンソース版(RStudio Desktop 2022.02.0+443)は以下からダウンロードしてインストールすることができる。

https://www.rstudio.com/products/rstudio/download/#download

RStudioは主に4つの部分(pane)に分かれている。

  • Console(左下)・・・コマンドをインタラクティブに入力して出力結果を確認する。
  • Editor(左上)・・・Rコマンドを組み合わせたコンピュータプログラミングを作成する。デバッグやインラインでの動作確認をConsoleを併用して行う。
  • Files, Plots, Packages, Help(右下)・・・作業ディレクトリ上のファイル状態の確認、可視化結果の出力と画像ファイルの取り込み、パッケージ確認、マニュアル表示を各タブで行える。
  • Environment, History(右上)・・・定義済みデータオブジェクトとオブジェクト状態の表示、過去にConsoleに入力したコマンド履歴の確認ができる。
RStudioの画面

RStudio Cloudを使うことで、自身のPCへR環境を構築することなく、RStudioをブラウザ上で利用することもできる。

Rの基本操作

オブジェクトと関数

Rはオブジェクト(object)型言語に分類される。Rのオブジェクトは、関数オブジェクトとデータオブジェクトの2種類がある。

関数オブジェクトはデータの処理や解析のプログラムセットであり、データオブジェクトとは、データセットを指す。複数の関数オブジェクトがリンクしているオブジェクトグループをクラスと呼ぶ。また、オブジェクトの集合体がパッケージとしてまとめられている。パッケージの中には、関数オブジェクトと伴にデータオブジェクトが含まれているものをある。

データ解析には独立した関数オブジェクトを用いるか、複数のオブジェクトを組み合わせて用いる。ここでは関数オブジェクトを以下単に関数と呼ぶことにする。関数には通常複数の引数が存在している。引数はデータあるいはデータ解析のための条件となる。

関数 (引数)

Rには通常頻繁に利用されるデータ操作や表人的な統計計算を実行するための関数が標準で用意されている。Rは関数をパーツとみなし、それらを組み合わせることで複雑なデータ処理やマイニングを可能とできるようになっている。

データオブジェクトの例として複数の数値データを1つのオブジェクトとして結合してデータオブジェクトを作るc()を使ってみよう。Rのコンソールにc(1,2,3,4,5)と入力し、最後に[Enter]キーを押すと画面に結果が返される。

> c(1,2,3,4,5)
[1] 1 2 3 4 5

上記のコマンドの先頭「>」はRコンソール画面に自動的に現れるコマンドプロンプトの記号であり、コマンドとして入力する記号ではない。返された結果の先頭[1]は、始まる要素の番号を示している。

このコマンドでは、コンピュータ画面に表示されている結果はまだ、データオブジェクトとしてR環境中には保持されていない。実行した結果をオブジェクトとして保存するためには、代入(assignment)の手続きが必要となる。代入いくつかの方法で実行可能であるが、一般的な代入として「<-」が用いられる。

オブジェクトの名前 <- 関数(引数)

代入は、オブジェクトの名前と関数(あるいはオブジェクト)を「<-」で結ぶことで実行できる。

オブジェクトの名前をxとして、以下のコマンドを実行してデータ1,2,3,4,5がひとつのデータオブジェクトxとして作成される様子を確認してみよう。

> x <- c(1,2,3,4,5)

データオブジェクトxの状態を見たい場合は

> x
[1] 1 2 3 4 5

とRのプロンプトでオブジェクト名を入力して[Enter]キーを押す。

R言語では、このように作成したデータオブジェクトをまとめて処理や演算することができる。例えば、データオブジェクトの各要素を2乗する操作は

> x^2
[1] 1 4 9 16 25

となる。データの平均を求める関数meanをつかって、データオブジェクトxの平均値を求めるには、次のように関数オブジェクトmeanの引数にデータオブジェクトxを指定する。

> mean(x)
[1] 3

更に分散を計算したい場合は関数varをつかって、

> var(x)
[1] 2.5

となる。データxの分散を四捨五入するには、次のように関数roundを用いて以下のように入力する。

> round(var(x))
[1] 2

関数の組み合わせは、多重の丸括弧で囲み、計算結果を順次内側の関数から外側の関数へ渡しながら計算がすすむようになっている。

R言語の基本コマンド

繰り返し

コンピュータに同じ操作を繰り返し実行させるための指示文として、3種類の繰り返し文for, while, repeatがある。for文は以下の構文となり、変数を用いて繰り返しを行う回数を指示することができる。

for(変数 in 変数の開始値:変数の終了値){
   繰り返し処理の本体
]

例題 for文を用いて1から1000までの合計を求めなさい。

> S<-0
+ for(i in 1:1000){
+   S<-S+i
+ }
> S
[1] 500500

比較・判断

データを処理するとき、与えられた条件と比較し、条件分岐を行う必要がしばしばある。比較・判断にはif文を用いる。if文の構文は以下となる。

if(条件文) 処理1 else 処理2

条件文が真(True)の場合処理1が実行され、条件文が偽(False)の場合には処理2が実行される。条件文は常に真または偽となる論理値である必要がある。

例題 先に計算した1から1000までの和が500000以上であることを判断し、真であればTrueが、偽であればFalseを表示する条件文を作成しなさい。

> if(S>500000) print("True") else print("False")
[1] "True"

自作で関数を作る

Rでデータ解析を行う場合、適切な関数が定義されていないことや、いくつかの関数を組み合わせた操作をまとめたい場合がる。このような場合、自作で関数を定義することができる。関数の定義には関数functionを使う。関数functionにより関数オブジェクトを作ることができる。

関数functionによるプログラムの構文は以下のようになる

関数の名前 <- function(引数){
  操作の本体
}

操作の本体には、繰り返し処理、判断処理、データオブジェクトの生成、関数オブジェクトによるデータオブジェクトの操作などが入る。関数の返り値を指定したい場合は操作の本体の最後に

return(データオブジェクト)

と入力する。

例題 1からnまでの和を計算する関数sumを自作関数として作成しなさい。また、この関数sumを使って、1から3までの和と1から10までの和を計算しなさい。

> sum<-function(n){
+ S<-0
+ for(i in 1:n) S<-S+i
+ return(S)
+ }

> sum(3)
[1] 6
> sum(10)
[1] 55

Rソースコードの作成

R言語をコマンドプロンプトだけで使っていると、色々と不便を感じる。例えば、過去に作成した自作関数を別の時に利用したいと思うこともあるし、過去に作成したデータオブジェクトを再度入力するのも手間である。

このようなことを避けるためにRではRソースコードという考え方がある。これは入力するコマンドをファイルに記載して、

source(ファイル名)

として実行する方式である。ファイルの操作については、Rコンソールでファイルー>新しいスクリプトを選択するとエディタが表示される。このエディタに必要なコマンドの列を入力して、ファイルー>別名で保存を選ぶことでファイル名を指定してRソースコードをディスクに保存できる。

例題 前の例題で作成した1からnまでの和を計算する関数sumをファイル名「sum.R」に保存しなさい。そして、コマンドから関数sourceを使って呼出して、1から3までの和と1から10までの和を計算しなさい。

sum.Rの内容

sum<-function(n){
  S<-0
  for(i in 1:n) S<-S+i
  return(S)
}
> source("sum.R")
> sum(3)
[1] 6
> sum(10)
[1] 55

保存したディレクトリによっては”sum.R”の前にディレクトリを指定するパスが必要となります。

パッケージ

Rは様々なパッケージをインストールして利用できるようになっている。パッケージはCRANサイト

https://cran.r-project.org/web/packages/available_packages_by_name.html

から公開されており、ダウンロードしてインストールすることで利用できる。

すでに利用可能なインストール済みパッケージを利用する場合はlibrary()関数を用いる。既に組み込み済みで利用可能なパッケージはsearch()関数を使って確認できる。

> search()

例題 多変量データ解析用パッケージMASSを読込みなさい。また、多変量データ解析用パッケージのヘルプを参照しなさい。

> library(MASS)
> help(package="MASS")

パッケージのインストールには関数install.packagesを用いる。一般的な書式は以下となる。

> install.packages("パッケージ名称")

このコマンドを実行するとダウンロードサイトをしていする画面が表示される。Japan(Tokyo) [https]を選択すると統計数理研究所のミラーサイトが指定される。

例題 ネットワーク分析用パッケージigraphをインストールしなさい。また、読み込みを行ってこのパッケージが利用できるようにしなさい。

> install.packages("igraph")
> library(igraph)

以下コマンドを入力してスモールワールドの可視化デモを実行してみなさい。

> igraph_demo("smallworld")

新たにウインドウが開き、デモとして実行される関数オブジェクトの列が表示される。ウインドウの最下部にあるNextをクリックしていくことで、デモ用に用意された関数が呼び出されていくことで、ネットワークの関数実行の結果として、可視化結果が表示される。

まとめ

R環境の構築方法とRの基本操作について説明した。

小テスト

以下の問題に答えなさい。

問1

Rで以下のベクトル型データオブジェクトaの3乗を計算しなさい。

a<-c(0.5, 1.9, 2.1, 6.1, 12.6, 16.1, 0.1)

問2

Rで for文を用いて1から2000までの合計を求めなさい。

問3

1からnまでの和を計算する関数sumを自作関数として作成しなさい。また、この関数sumを使って、1から100までの和と1から500までの和を計算しなさい。

問4

自身のR環境でインストールされているパッケージの一覧を示しなさい。