変数から決まる定数を使ってRに関数を定義する方法はありますか?私はそれをより良いものにする方法がわからないのでここに例がある。関数内に変数定数を作るR
> index<-3
> f<-function(x){x+index}
> f(4)
[1] 7 #Great!
> index<-20
> f(4)
[1] 24 #No! I still want to see 7!
ありがとうございます! ?lockBinding
ため
変数から決まる定数を使ってRに関数を定義する方法はありますか?私はそれをより良いものにする方法がわからないのでここに例がある。関数内に変数定数を作るR
> index<-3
> f<-function(x){x+index}
> f(4)
[1] 7 #Great!
> index<-20
> f(4)
[1] 24 #No! I still want to see 7!
ありがとうございます! ?lockBinding
ため
可能な解決策は、別の関数の中に、あなたの関数を定義することである。
g <- function(index){
function(x) x + index
}
index <- 3
f <- g(index)
f(4)
index<-20
f(4)
今g(index)
の出力が内に定義された関数でありますg
の(実行)環境。この関数(f
)は、この環境ではindex
という値を見ています。ここでは3に固定されています。それが機能する理由ですが、もっと簡単な解決法があるかもしれません。
ありがとうございます!これはBenBarnesが上記のコメントで示唆していたように見えますが、私があなたの解決策を読むまでは、 "それを"得られませんでした。 – Rubarb
環境に関するアドバンストRの章は関連しています:http://adv-r.had.co.nz/Environments.html – paljenczy
見たいかもしれないhttp://stackoverflow.com/q/1169534 – BenBarnes
私は最終的にBenbarnesの短期的な取り組みはpaljenczyが示唆しているように環境を読み解いていくことができます。あなたがた両方に感謝します! – Rubarb