fa <- function(x){x+1}
fb <- function(x){x-1}
f1 <- function(x, y){f(x)^y}
f2 <- function(x, ab, y){
if(ab == 'a'){
f <- fa
} else {
f <- fb
}
f1(x, y)
}
f2(0, 'a', .5)
Error in f1(x, y) : could not find function "f"
の環境 f
で が定義されていないため、上記は機能しません。f1
これを機能させる良い方法は何ですか?それか
- グローバル環境のすべてを の環境に渡すことを回避し
f2
ます - 内部で関数を再定義する
f2
必要がなくなります (これは面倒であり、コピー/貼り付けエラーが発生する可能性があります)。
ある種の「サブグローバル」環境を定義し、誰もが使用したいものをこの環境に置き、すべての関数が「サブグローバル」からアクセスできるようにすることは理にかなっていますか? そして、どういうわけか、サブグローバルが常にグローバルの厳密なサブセットであることを確認しますか? 賢明な場合、どうすればこれを行うことができますか?