2  Rをはじめるにあたって

このページでは、Rを使うために事前に知っておいた方がいいと思うことを整理したいと思います。

統合開発環境(IDE)に依らず、共通して使える知識が中心です。

2.1 パッケージと関数

Rにはパッケージとそれに含まれる関数という2つの重要な概念があります。

2.1.1 パッケージとは

パッケージとは、Rの機能を拡張するための追加モジュールのことです。Rには基本的な機能が備わっていますが、特定の分析手法やデータ操作を行うためには、追加のパッケージをインストールして利用する必要があります。

というより、もはやRの基本機能だけでできることは限られており、実際のデータハンドリングや分析ではパッケージを使わないことはほぼありません。

例えば有名なものにdplyrパッケージがあります。データに新たな変数を追加したり、特定の行や列だけを抽出したりと、一般にデータを扱う上で非常に便利な機能をたくさん含んだパッケージです。

はじめにでパッケージのインストールについて説明しました。そこで記した通り、始めて使う場合にはインストールから行う必要があり、先述の通りinstall.packages("dplyr")のようにしてインストールします。

また、実際に使う際にはあらかじめ読み込んでおく必要があります1。読み込みは以下のようにします。

library(dplyr)

2.1.2 関数とは

関数とは、特定の処理を行うための命令のことです。Rでは、データの読み込み、加工、分析、可視化など、さまざまな操作を関数を使って実行します。デフォルトで使えるものもあれば、パッケージを読み込んで初めて使えるようになるものもあります。

例えば、mean()関数は数値の平均を計算するための関数です。使い方は以下の通りです。

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

c(1, 2, 3, 4, 5)は5つの数値をまとめたベクトル2で、mean()関数に渡すことでその平均値が計算されます。出力された結果を見てもわかる通り、平均値は3です。

先ほど挙げたdplyrパッケージにも多くの関数が含まれており、例えばfilter()関数はデータフレームから特定の条件を満たす行だけを抽出するための関数です。

library(dplyr)

data <- data.frame(
  name = c("Yosuke", "Kosuke", "Sosuke", "Ryosuke"), 
  age = c(25, 30, 35, 40)
)

filtered_data <- filter(data, age > 30)
print(filtered_data)
     name age
1  Sosuke  35
2 Ryosuke  40

いろいろと出てきましたが、dataには4人の名前と年齢が入ったデータフレームが格納されています。filter(data, age > 30)とすることで、dataの中でageが30より大きい行だけを抽出し、filtered_dataに格納しています。最後にprint(filtered_data)で結果を表示しています。

パッケージを読み込まずにdplyr::filter(data, age > 30)としても同義です。

ここでは大まかにデータを使うためにはパッケージが必要で、そこに含まれる関数を使って処理を行う、ということを理解していただければと思います。

2.2 ワーキングディレクトリ

Rでは、ファイルの読み書きを行う際にワーキングディレクトリという概念が重要になります。

この点についてはプロジェクトを始めるの章で発展的に扱いますが、ここをおろそかにするとトラブルのもとですし、より効率的なコードを書くためにも重要ですので、ご存じでなかった方にはぜひご理解いただければと思います。

2.2.1 ワーキングディレクトリとは

ワーキングディレクトリ(以降WDと略します)とは、Rがファイルの読み書きを行う際の基準となるフォルダのことです。大雑把にディレクトリ=フォルダと考えてください。

WDはRを起動したときに自動で設定されますが、実際には必要な作業に応じてフォルダを作成して作業をすることになるため、自分で設定し直す必要があります。

ワーキングディレクトリを設定することによる一番の恩恵は、ファイルのパスを短くできることです。

絶対パスと相対パスをご存じでしょうか?絶対パスとは、WindowsであればC://Users/ユーザー名/Documents/data/dataset1.csvのように、ルートディレクトリ(WindowsであればC://、Macであれば/)から始まる、あるファイルやフォルダのパスのことです。これを指定すると絶対にそのファイルを参照できる一方、非常に長くなってしまうという欠点があります。また、フォルダ整理で場所を移行したり、他のPCで同じコードを実行したりすると、当然そのパスは変わってしまうため、コードが動かなくなってしまいます。

一方、相対パスとは、現在の場所から見た目的にそのファイルやフォルダがどこにあるかを示すパスです。例えば、data/dataset1.csvのように、現在のフォルダから見てdataフォルダの中にあるdataset1.csvを指します。ここでいう「現在のフォルダ」というのがワーキングディレクトリですが、これは自分で設定する必要があります。

ノート用語の整理
  • ディレクトリ:フォルダのこと
  • ルートディレクトリ:ディレクトリの最上位。WindowsであればC://、Macであれば/
  • 絶対パス:ルートディレクトリから始まるパス
  • 相対パス:現在のディレクトリ(WD)から見たパス

2.2.2 ワーキングディレクトリの確認

Rで現在のWDを確認するには、getwd()関数を使います。

もし「それをどこに打ち込めばいいんだ…?」という方であれば、RStudioをいじってみるの章を先にご確認いただき、RStudioのコンソール画面に打ち込んでみてください。

getwd()
[1] "C:/Users/yo5uk/life_with_r"

私はWindowsのローカルでこのページを作成していますので、Cから始まるC:/Users/yo5uk/life_with_rと出力されています。

getwd()で表示されたディレクトリ以下のフォルダやファイルを参照する場合、相対パスで指定できます。例えば、dataフォルダの中にあるdataset1.csv3を参照する場合、data/dataset1.csvと書けばよいことになります。

2.3 ワーキングディレクトリの変更

RでWDを変更するには、setwd()関数を使います。

もし現在のWDがC://Users/ユーザー名/Documentsで、新たにWDをC://Users/ユーザー名/projects/project1に変更したい場合、以下のようにします。

setwd("C://Users/ユーザー名/projects/project1")

これでWDが変更されました。ダブルクォーテーションで囲むのを忘れないでください。getwd()で確認すると、設定できていることがわかるかと思います。

  • Windowsの場合

    1. エクスプローラーで目的のフォルダを開く
    2. 上部のアドレスバーを右クリックし、「アドレスを(テキストとして)コピー」を選択
    3. setwd()の引数にペーストする
  • Macの場合

    私自身がWindowsユーザーなので、Macの方法についてはこちらをご参照ください。

2.3.1 RStudioでのワーキングディレクトリ

RStudioにおけるWDの確認、変更方法については、第3章で説明します。

2.3.2 Positronでのワーキングディレクトリ

PositronにおけるWDの確認、変更方法については、第4章で説明します。

2.4 スクリプトとコンソールについて

Rでは、コードを書く場所としてスクリプトコンソールの2つがあります。

2.4.1 スクリプトとは

スクリプトとは、Rのコードを保存しておくためのファイルのことです。Rでは通常、拡張子が.Rのファイルにコードを書きます。

スクリプトに書いた内容は、後から読み返したり、修正したり、再実行したりできるため、作業の記録としても非常に重要です。分析を進めるうちに何度も同じ処理を行いたくなることがありますが、そのときにスクリプトを使っておけば、同じ手順を再現するのが簡単になります。

また、ここでは詳しく説明しませんが、source()関数を使うと、保存したスクリプトを一括で実行することもできます。例えば、source("analysis.R")と入力すれば、analytics.Rファイルに書かれたコードが上から順に実行されます。

2.4.2 コンソールとは

コンソールとは、Rに直接コードを入力して、その場で実行できる場所です。スクリプトに書かずに、すぐに結果を見たいときに便利です。

例えば、コンソールで1 + 1と入力してEnterを押すと、すぐに[1] 2と結果が表示されます。簡単な計算や関数の動作確認など、試し打ちをしたいときに最適です。

ただし、コンソールに入力したコードはファイルとして保存されないため、あとから見返すことはできません4

コンソールの場所はIDEによって異なりますが、RStudioとPositronの章で改めて説明します。

2.4.3 どちらを使うべきか

どちらを使っても結果は同じですが、スクリプトに書いておくことで分析を「再現できる」ようになります。 Rでの作業は試行錯誤の連続なので、スクリプト上で書く → 実行する → 修正するという流れを繰り返し、最終的なコードを完成させていきます。

よって、基本的にはスクリプトに書くことを心がけ、コンソールは試し打ちや動作確認に使うのがよいでしょう。

2.4.4 パッケージのドキュメントをみる

コンソールではもう一つ便利な機能があります。それは、パッケージのドキュメントをすぐに見ることができることです。

Rにはさまざまな関数がありますが、それらの関数がどのような働きをするのか、引数は何を指定すればよいのか、戻り値は何か、といったことがわからなかったり忘れたりすることはよくあります。

そのようなときは、コンソールで?[パッケージ名]::[関数名]と入力することで、その関数のドキュメントをすぐに確認できます。ドキュメントというのは、その関数の説明書みたいなもので、パッケージの開発者によって引数(関数内で指定する値)の説明や使用例が記載されています。

例えば、dplyrパッケージのfilter()関数のドキュメントを見たい場合、以下のように入力します5

?dplyr::filter

すると、RStudioであれば右下のヘルプ画面にfilter()関数のドキュメントが表示されます。

filter()関数のドキュメント

有名な関数であれば日本語の記事がインターネット上にたくさんありますが、マイナーな関数や新しい関数の場合はドキュメントを読むことで理解が深まる場合もよくありますので、ぜひ活用してみてください。

以上でRを使う前に知っておくと有益な基本事項の説明を終わります。それでは次の章からはIDEの使い方を説明していきます。


  1. 厳密にはdplyr::関数名()のようにすれば、読み込まずとも使えますが、各関数がどのパッケージのものかが明確である反面、コードが非常に長くなってしまうため、先に読み込むことが一般的です。↩︎

  2. ベクトルについても後の章で解説します(現在準備中)。今は5つの数値をまとめているのだなとご理解ください。↩︎

  3. 絶対パスの場合はC://Users/ユーザー名/Documents/data/dataset1.csvとなります。↩︎

  4. 細かい話をすれば.Rhistoryというファイルが自動で生成され実行したコードは振り返ることができますが、エラーが出た関数等も保存されるので、見返すのには不向きです。↩︎

  5. これは一時的に参照したい類のものですので、スクリプトではなくコンソールに打ち込むのがよいと思います。↩︎