« [R]微分する | トップページ | [R]簡単に非線形最小2乗法を行う »

2014年2月11日 (火)

[R]文字列で名前を与えた関数を実行する

数値計算のための汎用サブルーチン(関数)において、値を返す関数名を文字列として与えたいときがある。プログラミング言語では通常は使えない機能で、Fortran 77やFortran 95では、externalを使用することで行うことはできる。

関数callと関数evalを組み合わせて使用することで、文字列で名前を与えた関数を行い、計算も行うことができるようになる。

> sin(pi / 4)  # 普通に関数を実行
[1] 0.7071068
> s <- "sin"  # 文字列で名前を与えて行いたい関数名を指定
> eval(call(s, pi / 4))  # 関数の実行
[1] 0.7071068
> f <- function(x) { return(x ^ 2) }  # 自作関数の定義
> s <- "f"
> eval(call(s, 3))  # 自作関数名を文字列で与えて関数の実行
[1] 9
> atan2(pi, 4)  # 引数が2つ必要な数学関数で実験
[1] 0.6657738
> s <- "atan2"
> n1 <- pi  # 値も変数で与えることにする
> n2 <- 4  # 同上
> eval(call(s, n1, n2))
[1] 0.6657738

« [R]微分する | トップページ | [R]簡単に非線形最小2乗法を行う »

R(数値計算)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [R]微分する | トップページ | [R]簡単に非線形最小2乗法を行う »

無料ブログはココログ

■■

■■■