調査系論文シリーズ

自作関数の作り方(p107)

ここでは、自分で関数を作る方法を説明します。本書のp106のcohenのdのように複数の変数に関して同じ計算をする場合、その都度「方法1」のような式を記述するのは効率が良くありませんし、ミスが生じる可能性もあります。そこで、決められた計算(処理)を行う際に、自分で関数を作成すると便利です。

最初からp107のような自作関数を作るのは難しいので、まずは単純な3つの値を入れて平均を求める関数を自作してみます。もちろんすでに紹介したmean( )で計算できますが、ここではあえてmean2( )という関数を作成します。定義する計算式は以下のとおりです。


それでは、作成してみましょう。関数を作って実行する手順は2ステップです。

1. 関数を定義する

上記の式を関数で定義するには以下のスクリプトになります。

mean2 <- function(x, y, z){
  result <- (x + y + z)/3
  result
}


このスクリプトの意味は、新しく作成する関数の名前はmean2とする。

そして、その次の

function(  ){
}

の部分が、関数ということを示します。つまり、「mean2という名前の関数を作成するよ」という宣言です。

関数を意味するfunctionの後の( )の中には、引数を指定します。ここでは、3つの数値を入れるので、x, y, zとしています。そして、{ } の中に計算をするステップを指定します。

result <- (x + y + z)/3 は引数として指定した3つの数値を使って計算をして、その結果をresultとして保存する という意味です。次の行の resultは その結果を表示するためのスクリプトです。

それでは、これを一旦実行して、R環境にmean2という関数を定義します。

> mean2 <- function(x, y, z){
+   result <- (x + y + z)/3
+   result
+ }


2. 関数を実行する

上記のスクリプトを実行すれば、Rの中にmean2( )という関数が定義されます。次にその関数を使う方法です。これは、これまで説明してきた既存の関数と同じです。例えば、4, 6, 9の平均を求めたければ、

mean2(4, 6, 9)

を実行すれば計算結果が表示されます。

> mean2(4, 6, 9)
[1] 6.333333


それでは改めて見てみましょう。function(x, y, z) というのは、1つ目の引数がx、2つ目の引数がy、3つ目の引数はzというように、x, y, zにそれぞれの数値を代入していることになります。したがって、このmean2は、3つの引数を指定しないとうまくいきません。function(  )で指定したx, y, zは、{ }内で使用した表記と一致していれば構いませんので、x1, x2, x3でも構いません。

これをふまえて、式を確認しながら、p107の効果量の自作関数を読み解いてみてください。

Copyright © Wakita Takafumi.