グローバル環境内の関数から変数を格納しようとしていますが、私が見つけた解決策はどれもSO postまたはdifferent SO postでした。これは私の問題を説明するための非常に簡単な例です。私の実際の関数は数十の変数を作成するので、<<-
を使ってv
をグローバルにすることはできません。グローバル環境内の関数から変数を格納する
コード(main_file.R)
source("function_me.R")
#environment(doGlobalThing) <-parent.frame(2) #didnt work
doGlobalThing()
v #cant get to this var from the global environment
コード(function_me.R)
doGlobalThing<-function(){
#eval(v<-'hi',env=parent.frame(2)) #tried this, didnt work
v<-'hi'
}
言語の設計に対しては対処しないでください。関数型プログラミングを学ぶ。 – Roland
@Roland、関数型プログラミングのいくつかの教義に基づいたEMPTYグローバル環境で、グローバル変数の新しいセットを作成する私の考えがなぜ間違っているのかを簡単に説明できますか? – Rilcon42
これを実行する利点は、関数から必要なもの、例えばリストを返すことには全くありません。しかし、注意するように、関数にサイト効果があり、問題が発生しないことを覚えておかなければならないという負担が生じます。そして、もちろん、それはあなたが本当にあなたのコードを他人に与えたり、簡単に再利用することはできないということです。これを行うことができる唯一の状況は、参照によって割り当ててその場で修正しようとしていた場合ですが、グローバルな環境ではなく別の環境で行う必要があります(または参照クラスを使用する)。 – Roland