[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]複数のパラメーターと定数を持つ関数の値が最大・最小となるパラメーターを求める(2026.03.30)
- [R]重み付き線形最小二乗法を行う(2026.03.20)
- [R]重み付き非線形最小二乗法を行う(2026.03.06)
- [R]計算機イプシロンを求める(2025.10.29)
- [R]複数の引数を持つ関数の値の最小値(最大値)を求める(2024.12.07)

コメント