LoginSignup
1
1

More than 3 years have passed since last update.

ケモインフォマティクスで学ぶRの関数

Posted at

はじめに

ケモインフォマティクスで学ぶRの反復処理に引き続き、リピドミクス(脂質の網羅解析)を題材として「関数」について解説していきます。
ケモインフォマティクスの実践例を中心に説明していきますので、基本を確認したいという人は以下の記事を読んでからこの記事を読んでみてください。

製薬企業研究者がRにおける関数についてまとめてみた

関数の作成と利用

関数というのは、一連の処理をひとまとめにしたもので、function(引数){処理}と記述することができます。
一度関数を作成したら、あとは関数名を呼び出すだけで、関数内に記述されている処理を実行できます。
戻り値(返り値)は、returnを使って書くことができます。

exact.mass <- function(Cn, Un){
  return (12 * Cn + 1.00783 * (2 * Cn - 2 * Un) + 15.99491 * 2)
}

exact.mass(16, 0)
exact.mass(18, 2)

変数のスコープ

関数を利用する時には、「変数のスコープ」に注意する必要があります。
変数のスコープというのは、変数がどの範囲で使えるかということで、関数内だけでしか使えない場合(ローカル変数)もあれば、関数の外でも使える場合(グローバル変数)もあります。

abbreviation <- function(a, b){
  Cn <- a
  Un <- b
  return (paste0("FA ", Cn, ":", Un))
}

Cn <- 16
Un <- 0

abbreviation(18, 2) # "FA 18:2"

print(Cn) # 16
print(Un) # 0

上の例では、関数abbreviation内で出てくる変数CnUnはいずれもローカル変数で、関数の外で定義されているCnUnとは別物です。
なので、関数を呼び出しても、変数CnUnの値は更新されません。

ここで、関数を呼び出すことで、変数CnUnの値も更新したい場合は、<<-を使って、関数内のCnUnがローカル変数ではなくグローバル変数であることを示す必要があります。

abbreviation <- function(a, b){
  Cn <<- a
  Un <<- b
  return (paste0("FA ", Cn, ":", Un))
}

Cn = 16
Un = 0

abbreviation(18, 2) # "FA 18:2"

print(Cn) # 18
print(Un) # 2

上の例では、CnUnがグローバル変数として扱われているので、関数呼び出し時にCnUnの値も更新されます。

まとめ

ここでは、Rの関数について、ケモインフォマティクスで使える実践的な知識を中心に解説しました。
もう一度要点をおさらいしておきましょう。

  • 関数はひとかたまりの処理をまとめて記述したもので、一度作っておけば、あとは呼び出すだけで処理を実行できます。
  • 関数内で変数を扱う時には、変数のスコープに注意する必要があります。

参考資料・リンク

プログラミング言語Rとは?統計分析に強い?

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1