グローバル環境 ( ) に親としてアタッチされるようなRsource()
のスクリプトへの方法はありますか?.GlobalEnv
現在、スクリプトをソースすると、そのスクリプトのすべての変数と関数がグローバル (インタラクティブ) 環境に表示されます。これらの変数と関数を検索パスに含めたいのですが、.GlobalEnv
. つまり、ソース スクリプトが、グローバル環境とベース環境の間でアタッチされるアタッチされたパッケージのように動作することを望みます (高度な R 環境の図を参照) 。
グローバル環境 ( ) に親としてアタッチされるようなRsource()
のスクリプトへの方法はありますか?.GlobalEnv
現在、スクリプトをソースすると、そのスクリプトのすべての変数と関数がグローバル (インタラクティブ) 環境に表示されます。これらの変数と関数を検索パスに含めたいのですが、.GlobalEnv
. つまり、ソース スクリプトが、グローバル環境とベース環境の間でアタッチされるアタッチされたパッケージのように動作することを望みます (高度な R 環境の図を参照) 。
次の環境挿入は、目的の機能を実現するために表示されます。
現在の検索パスを確認します。
search()
# [1] ".GlobalEnv" "package:stats" "package:graphics"
# [4] "package:grDevices" "package:utils" "package:datasets"
# [7] "package:methods" "Autoloads" "package:base"
ソース パッケージ用の新しい環境を追加し、次の場合local
にパラメーターを使用しますsource()
。
myEnv <- new.env()
source("some_other_script.R", local=myEnv)
attach(myEnv, name="sourced_scripts")
検索パスを確認します。
search()
# [1] ".GlobalEnv" "sourced_scripts" "package:dplyr"
# [4] "package:stats" "package:graphics" "package:grDevices"
# [7] "package:utils" "package:datasets" "package:methods"
# [10] "Autoloads" "package:base"
ソーシング後attach()
に新しい環境を作成することに注意してください。これは、検索パスのスクリプト環境の後に追加されます。dplyr
source
ドキュメントから、引数local
は、ソースの式が評価される場所を決定する環境にすることができます。
source
これは、新しい環境を作成し、この環境を に渡して実行しlocal
、次にattach
環境を検索パスに渡すことができることを示唆しています。
または、 attach withwhat=NULL
を使用して空の環境を作成し、戻り値を保存して、それをlocal
in に渡すことができsource
ます。
tmp <- attach(what=NULL)
source('test.R', local=tmp)
または単一行として:
source('test.R', local=attach(NULL))