他の人が所有している他の関数f2(x)
を呼び出す関数f1(x)
を定義したとします。私はf1
で定義した変数を、別の引数を渡さずにf2
で利用できるようにします。ここで変数スコープが関数Rの内部で実行されています
であり、例:
a<-4 # A global variable
f2<-function(x,b){
return(a*b*x) #accesses a global variable and one that I want to define inside f1
}
f1<-function(x){
b<-2 # Note: I do not want to use b<<-2 because it messes up my .GlobalEnv
y = f2(x) # This produces error saying 'b' is undefined
return(y)
}
f1(10) # This should produce 80 (= 4*2*10) but gives error that 'b' is not defined
私は任意の入力に感謝します。
ありがとうございます!
あなたが上記の関数でしなかったことの1つは、 'b'の引数' f2() 'を与えることです。デフォルトがないので動作しません。なぜあなたは 'f1 <-function(x){ b <-2 y = f2(x、b) return(y) }'と書くことができませんでしたか? – jacobsg
ありがとう@jacobsg。理由は非常に複雑です。 f2は誰かによって書かれています。私にはたくさんのbがあり、f2のように関数の外で変数を使うようなものがたくさんあります。あなたが提案したことをすれば、私はそれを全面的にやる必要があり、それは非常に時間がかかるでしょう。考えをより複雑にするために、私はすべてのbを認識していません。試行錯誤によってのみ、すべてのbを1つのf2で見つけることができます。 – user1288502