作業領域は、グローバル環境とも呼ばれます。
関数は、独自の環境で実行します。。たとえば、定義されている変数がのグローバル環境内の関数であるとは見えません。関数本体に定義されているx
という変数を使用する方法もありますが、グローバル環境で発生する可能性があります。x
ほとんどの機能は外部環境を変更するものではありません。これは関数型プログラミングのパラダイムです。 rm
やsource
などの環境を変更する関数は、通常、どの環境が変更されているかを明示できるように引数をとります。 ?rm
を見ると、envir
という引数があり、その引数のほとんどは、そのの詳細のセクションで説明されています。 - TRUE
、FALSE
や環境、解析された式が評価されている場所を決定
local
:source
はlocal
引数があります。 FALSE
(デフォルト)は、ユーザのワークスペース(地球環境)に対応し、TRUE
は、source
が呼び出される環境に対応します。
あなたがsource
を呼び出すときには、明示的に明示的に地球環境が手つかずで当然のようにローカル(関数内)の環境を変更するだけにsource
に指示され、local = TRUE
を設定!
私はあなたがそれらを、あなたがこのようclearWorkSpace
を修正することができるしたいと仮定して、あなたの機能を動作させるために:
clearWorkSpace <- function() {
rm(list= ls(all=TRUE, envir = .GlobalEnv), envir = .GlobalEnv)
}
単にlocal = TRUE
を削除loadDependencies
ため。(特に簡略化され、依存関係が上記実行している)これらの両方のために
loadDependencies = function() {
invisible(lapply(list.files(path = "./dependencies", full.names = TRUE), source))
}
私はあなたかどうかを質問したい:あなたはより多くのRのような方法でそれを再作成することもできますが(またはそれ以上の明示的local = FALSE
設定またはlocal = .GlobalEnv
)これらは関数で包まれている必要があります。環境へのより多くの読書について
...ちょうどあなたがプロジェクトの作業を再開したときにRを再起動し、スクリプトの先頭に
invisible(lapply(list.files(path = "./dependencies", full.names = TRUE), source))
を維持するのが習慣に取得するには良いかもしれない、
The Evironments Section of Advanced Rがあります。特に、グローバル環境をハードコーディングするのではなく、さまざまなユースケースに役立つ環境を指定する方法はいくつかあります。
rm(list= ls(all=TRUE, envir = .GlobalEnv))
私はあなたが(たとえそれがpos
引数を使用する方が良いです)、明示的に環境を設定する意味: