スポンサーリンク

【R言語】functionで関数を自作するための基礎知識 その1

 

Rの長所としてはfunction()という関数を使うことで特定の変数に自分の作った計算コードを保存できるという点があります。まあ自分で複雑なfunctionのスクリプトを書いてパッケージが作れるくらいが理想なのですが、現実はパッケージ頼りという人が結構多いと思います。

 

まあオブジェクト指向とif・forってプログラミングで一番躓く場所なので、そうなのも残念ながら当然という感じもしますが、とりあえずパッケージの関数の中身を見てRでは >?関数名 で関数の中身を見ることができます。

 

あーこういう処理をしてるんだなというのを少しずつ勉強していけば、いずれ自分でスクリプトを描けるようになると思います。

 

 

 

というわけで今回はfunction()の基本的な書き方について見ていきます。まず、function()を使った関数の定義式の書き方はこんな感じです。

 

 

>関数名 <- function( 引数1, ・・・ , 引数n ) {

<関数本体>

}

 

試しに簡単な関数を自作してみます。

 

##足し算する関数の作成##

> add<-function(x=10,y=20){
+ x+y
+ }

 

##引数を指定しなかった場合デフォルトの数値が使われる

 > add()
[1] 30

 

##引数を指定するとその値で計算してくれる

> add(100,200)
[1] 300

 

 

 

今度は少し実践的な書き方を見ていきます。関数で様々な演算を行った後に、計算結果を返すときは return または invisible を利用するのが一般的です。

 

return の場合は、計算結果を返すと同時に画面上に結果が表示されます。一方、invisible は計算結果を返しますが結果は画面上に表示されません。

 

 

 

###  return で返す関数 ###
> add <- function(x = 10, y =20) {
+ p <- x + y
+ return(p)
+ }

###  invisible で返す関数 ###
> add2 <- function(x =10, y = 20) {
+ p <- x + y
+ invisible(p)
+ }

 

 

関数の計算結果を受け取る変数があると、計算結果が変数に代入されるため、return と invisible どっちでも同じになります。

 

>x1 <- plus1(15, 25)
>x1
## [1] 40

>x2 <- plus2(15, 25)
>x2
## [1] 40

 

しかし、関数の計算結果を受け取る変数がないと、return だと計算結果が画面上に表示させるのに対して、invisible では計算結果を画面上に表示されず、見かけだけだと何も起こっていないように見えます。

 

> add(10, 20)
[1] 30

> add2(10, 20)
>

 

まあこの2つの違いはそこまで重要ではないのですが、パッケージのコードとか見るとreturnとかinvisibleとかが出てくるのでこの2つがどういう意味をもっているのかは知っておく必要があると思います。

 

 

スポンサーリンク

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする