Mukku John Blog

取り組んでいること を つらつら と

Rプログラミング入門 4回目

Rプログラミング入門 4回目。引数とスクリプト

 

引数

独自関数に引数をもたせましょう。なお話し。

 とりあえず、前回の記事で作成したroll関数から。

mukkujohn.hatenablog.com

 

RStudio

f:id:MukkuJohn:20160623205830p:plain

R  Tools for Visual Studio

f:id:MukkuJohn:20160623205846p:plain

 この関数、1:6のベクトルから、元に戻すサンプリングで2個要素を抽出しますが、

1:6の部分を変えたいなーとか思います。ついでに抽出要素も変えたいなーとかね。

 

そこで、引数です。

引数は、関数の「()」の部分にオブジェクトを渡す書き方をします。

RStudio

f:id:MukkuJohn:20160623210333p:plain

R Tools for Visual Studio

f:id:MukkuJohn:20160623210404p:plain

roll2関数にbonesオブジェクトを渡し、関数の本体で、bonesオブジェクトを利用しています。

roll2関数を呼ぶ際には、roll2(1:6)や、roll2(1:20)などのように、ベクトルを指定します。

C#とかと比較すると、型が分からないのが嫌なところ。

 

引数を指定しないとこうなります。

RStudio

f:id:MukkuJohn:20160623210730p:plain

R Tools for Visual Studio

f:id:MukkuJohn:20160623210756p:plain

どちらも関数内でエラーになった本体の箇所と、理由が表示されます。

「引数"bones"がないぞ、デフォルトでもないし。」と。

なら、デフォルト値を持つ引数にしておきましょう。

 

デフォルト値を持つ引数

定義は簡単。function(bones) ⇒ function(bones = 1:6)とするだけ。

RStudio

f:id:MukkuJohn:20160623211312p:plain

R Tools for Visual Studio

f:id:MukkuJohn:20160623211332p:plain

roll2オブジェクトに再定義を行いました。

これで、roll2()と呼び出しても、bones = 1:6 として動いてくれます。

 

このデフォルト値を持つ関数の指定について、IDEの違いがありました。

RStudio

f:id:MukkuJohn:20160623211604p:plain

R Tools for Visual Studio

f:id:MukkuJohn:20160623211612p:plain

RStudioはbones引数があって、しかもデフォルト値が1:6と教えてくれます。

R Tools for Visual Studioは教えてくれません。。。

RStudioの方が、使い勝手がよさげですね。

 

スクリプト

独自関数は、便利です。

独自関数を割り当てたオブジェクトがある間は、何度でも、関数名をコマンドに書くだけで使用できます。

 

ただ。オブジェクトがなくなると、また1から記載してオブジェクトを作らないといけません。

少なくとも、前回の記事でもroll関数を作り、今回の記事でもroll関数を作りで、2度作っています。

 

めんどくさいです。だから、ファイルに保存しましょう。なだけです。

 

RStudio

File -> New File -> R Scriptを選択します。

f:id:MukkuJohn:20160623213311p:plain

すると、スクリプトのエディターが開きます。

f:id:MukkuJohn:20160623213341p:plain

 エディターにコマンドを記載します。

f:id:MukkuJohn:20160623213516p:plain

Run ボタンは選択している行を実行します

Sourceボタンは全体を実行します。

Sourceボタンを押すと、このスクリプトが実行されます。

 

保存はこちら。適切なフォルダとファイル名をつけます。

f:id:MukkuJohn:20160623213737p:plain

これで、次回からこのファイルを開けば、roll関数を作るために、毎回毎回同じコマンドを入力する必要がなくなります。

 

R Tools for Visual Studio

こちらは方法的にこれで良いか不明です。。。

VSを使うなら、他言語と同様に、プロジェクト作って、中にファイル入れる形。

 

ファイル -> 新規作成 -> プロジェクトを選択します。

f:id:MukkuJohn:20160623214908p:plain

R Projectを選択します。

f:id:MukkuJohn:20160623215147p:plain

RStudioと同様に、スクリプトエディタが開きます。

f:id:MukkuJohn:20160623215208p:plain

その時のソリューションエクスプローラーがこちら。

f:id:MukkuJohn:20160623215243p:plain

スクリプトエディタ上に記載します。

f:id:MukkuJohn:20160623215254p:plain

スクリプト全体を実行するにはこのボタン。↓にファイルマーク。

f:id:MukkuJohn:20160623215324p:plain

source(~Rファイル)の後、roll2オブジェクトが生成されます。

f:id:MukkuJohn:20160623215352p:plain

 

今日はここまで。