R」入門

「R」入門
第10章:自分自身の関数を書く
10月31日(金)
発表者:紺野憲一
10.1 関数の作成の仕方
作りたい関数
関数名:Try
内容 :2入力の和の3乗を計算する
Try<ーfunction(x,y){
//引数はx一つ
z<-(x+y)*(x+y)*(x+y) //実計算
z
//zを出力
}
10.2新しい2項演算子の作成
• 引数が二つである関数は関数名の前後
に%をつけることによって2項演算子として用
いるようにできる。
例)先ほどの関数Tryを以下のように書く
“%Try%”<ーfunction(x,y){・・・・・}
使用法
z<ーx %Try% y
10.3名前付きの引数と既定値
• 関数の引数に名前が付けられている場合、
名前を指定する事でその順序を任意で指
定する事ができる。
例)data<-function(name,age,number){・・・・}
関数dataの引数は以下のように指定できる
tanaka<-data(“tanaka”,21,34342)
tanaka<-data(“tanaka”,number=34342,age=21)
tanaka<-data(age=21,number=34342,name=“tanaka”)
10.4 引数
関数中で別の関数に引数を受け継がせる事
ができる。
例)rei<-function(x,y){
z=x*y
Try(x,z)
※Tryは10.1で指定した関数
}
実行例
rei(2,3)
出力 1728
10.5関数中からの付値
• 関数内で用いられた全ての付値は関数か
ら抜け出す時に全て失われる。
例)tasu<-function(x,y){
z<-x+y
z
}
この関数を実行してもzに値が残る事はない。
• ここでzの値を残したい場合は
z<<-x+y とする。
宿題
(1)入力xとyの3乗の和を計算する関数を作
れ。
(2)上の関数と同じ効果の演算子を作れ。
(3)10.5の例題において既にzに値が入ってい
た時に関数tasuを使用したときzの値はどう
なるか。
宿題解答(1)
(1)fu<-function(x,y){
i=x*x*x
j=y*y*y
i+j
}
(2)”%fu%”<ーfunction(x,y){
・・・ 以下上に同じ
宿題解答(2)
(3)関数中のzと変数zはまった区別の物と認
識されている。よってzの値に変化は無い。