5 その他のRの概念
5.2 関数
5.2.1 少しの例
プログラミングにおける関数とは、与えられたデータに対して何らかの処理(計算)を行い、その結果を返す機能のことです。
例えば、mean()
関数を使うと数値ベクトルの平均値を求めることができます。
関数によっては複数の入力を受け取るものもあります。
例えば、四捨五入をする round()
という関数では小数点の何桁目で計算するかを指定できます。
5.2.2 用語
ここで、関数に関連したいくつかの用語について説明します。
関数の引数(ひきすう)とは、関数に入力するデータのことです。
上記の例であれば mean()
関数に引数として x や 1:3 を入力しています。
round()
関数の場合は 3.14159 と 0 という2つの値が引数として入力されています。
関数の返り値とは、関数の計算結果として出力される値のことです。
mean( 1:3 )
を行うと 2 が返り値になり、round( 3.14159, 0 )
は 3 が返り値となります。
プログラミングでは「関数に〜を渡すと…を返す」といった表現がよく使われます。
例えば、「mean 関数に 1:3 を渡すと 2 を返す」といった具合です。
5.2.3 名前付き引数
関数に引数を渡す際に、引数の名前を指定して入力することができます。
round()
関数は x
と digits
という名前の引数を持つ関数です。
ですので、引数を渡す際にこれらの名前と一緒に引数の値を入力できます。
関数が持つ引数の名前は help()
関数で確認できます。
または
を実行すると round()
関数のヘルプ(マニュアル)が表示されます。
ヘルプの中の Usage の項目に
round(x, digits = 0)
と表記されており、この関数には x
と digits
という2つの引数があることが確認できます。
また、Arguments の欄には引数の意味についての説明があります。
関数に名前無しで引数が渡された場合は、Usage に書かれた順序で引数の意味が解釈されます。
つまり、1つ目の引数は x
、2つ目の引数は digits
のことであると解釈して計算が実行されます。
関数に名前付きで引数を渡すことのメリットとして以下のようなものがあります。
- 引数の意味が分かりやすくなる
- 引数の入力する順序を自由に変えられる
- 関数が持つ引数のうち、一部の引数だけに値を渡すことができる
2点目について、例えば以下のようにすることができます。
3点目については、例えば plot()
関数では図の見た目を指定するための非常に多くの引数があります。名前付きで引数を渡すことで、指定したい引数のみに値を与えることができるようになります(plot
関数については詳しくはこちらで解説)。
5.2.4 引数のデフォルト値
引数はデフォルト値を持つことがあります。
例えば round()
関数の場合、help の記載は以下のようでした。
round(x, digits = 0)
ここの digits = 0
の部分がデフォルト値を伝えています。
round 関数の digits
という引数は、0 をデフォルト値に持っているのです。
(x
にはデフォルト値がないこともわかります)
引数がデフォルト値を持つ場合、関数を使う際に引数の入力を省略できます。
(他方でデフォルト値を持たない引数は必ず入力する必要があります)
5.2.5 改行について
関数の括弧内では改行が可能です。以下のような書き方をしても問題ありません。
round( x = 3.14159,
digits = 2 )
## [1] 3.14
round(
x = 3.14159,
digits = 2 )
## [1] 3.14
round(
x = 3.14159,
digits = 2
)
## [1] 3.14
以上のように引数ごとに改行する書き方は、引数の多い関数を使う場合にしばしば使われます。
例えば、plot()
関数は図の見た目を調整するための多くの引数があるため、以下のように引数ごとに改行すると引数の変更や追加などの編集がしやすくなります。
5.3 パッケージ
5.3.1 はじめに
R で使用可能な様々な関数やデータは用途別にパッケージ(package)として提供されています。R で実施可能な様々な統計的処理は関数として実行するものであり、その関数はパッケージを読み込むことで利用可能になります。
R には初めから様々なパッケージがインストール済みです。
また、新たにインストールできる様々なパッケージがインターネットで公開されています。
現在インストール済みのパッケージを確認するには、
または
を実行すると良いでしょう。
5.3.2 パッケージのインストールと読み込み
パッケージ(の関数やデータ)を利用可能にするには、パッケージがインストールされているだけでは不十分です。あるパッケージに属する関数を使用するには、まずそのパッケージを読み込む必要があります。それには library()
関数を使い、括弧内にパッケージ名を入力します。
例えば ggplot2
パッケージを読み込むには
という命令を実行します。
もし ggplot2 パッケージがインストールされていなければここでエラーが出ます。
その場合にはパッケージのインストールをまず行う必要があります。
パッケージをインストールするには install.packages()
関数を使います。
文字列を引用符"で囲う必要があることに注意してください。
インストールが終わったら(パッケージによってはインストールにけっこう時間がかかります)、library( ggplot2 )
はエラー無しで実行できるはずです。
パッケージのインストール作業は一度だけ行えば良く、次回からは繰り返す必要はありません。
(ただしパッケージのアップデートを行いたい場合は別)
一方、パッケージの読み込みは R を起動するたびに毎回行う必要があります。
R を起動した際に、インストール済みのパッケージのうちいくつかのパッケージは自動で読み込みも行われます(例えば base
パッケージなど)。ですので、base パッケージに含まれる関数(library(help = "base")
で確認できます)は library( base )
という命令を実行しなくても最初から使えます。
他方で、ユーザーが自分でインストールしたパッケージなど、大部分のパッケージはインストールはされていても R の起動時にはまだ読み込まれていません。なので、例えば ggplot2 パッケージを使用する場合はまず library( ggplot2 ) という命令を実行してパッケージの読み込みを行う必要があるのです。
読み込み済みのパッケージは search()
命令を実行すると確認できます。
(「package:パッケージ名」という形式で表示されます)