1

main.rワークスペースを実行前の状態に戻すスクリプトを作成したいと考えています (つまり、スクリプトの最後で、ワークスペースに追加されたすべてのオブジェクトのみを削除します)。以下を実行します。

#main.r
initial.objects <- objects()
tmp1 <- 1
remove(list = setdiff(objects(), initial.objects)

source('main.r')R コンソールからのviaは、必要に応じて機能します。ただし、これは作業ディレクトリに残されているSplus では機能しませんtmp1(ファイル全体をソースするのではなく、各行を個別に実行すると機能します)。もう少し調べてみると、R では、objects()への呼び出しの MIDDLE であっても、ワークスペースに入るオブジェクトを追跡していることがわかりましたsource()。Splus ではobjects()、呼び出しが終了するまで、ワークスペースに追加されたオブジェクトについて「認識」していないようですsource()

Q: 何が起こっているのですか? main.rSplus での作業に似たものを得るにはどうすればよいですか?

4

1 に答える 1

1

ここで何をしようとしているのかわかりませんが、環境を再読み込みする最善の方法は、環境を保存して再読み込みすることです。

save("pre-environ.Rdata")
## Your script goes here
rm(list=ls()) ## clean the environment
## Reload the original environ at end of your script
load("pre-environ.Rdata")
于 2011-03-23T00:41:22.870 に答える