2
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必要がなくなります (これは面倒であり、コピー/貼り付けエラーが発生する可能性があります)。

ある種の「サブグローバル」環境を定義し、誰もが使用したいものをこの環境に置き、すべての関数が「サブグローバル」からアクセスできるようにすることは理にかなっていますか? そして、どういうわけか、サブグローバルが常にグローバルの厳密なサブセットであることを確認しますか? 賢明な場合、どうすればこれを行うことができますか?

4

1 に答える 1