1

我想编写一个脚本main.r,将工作空间返回到运行前的状态(即,在脚本结束时,删除所有且仅删除已添加到工作空间的对象)。运行以下:

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

source('main.r')来自 R 控制台的via按需要工作。但是,如果将其留在工作目录中,这在 Splustmp1中不起作用(当我单独运行每一行而不是获取整个文件时,它确实起作用)。进一步调查,我发现在 Robjects()中,即使在调用source(). 在 Splus 中,objects()似乎直到source()调用结束才“知道”已添加到工作区的对象。

问:怎么回事?我该怎么做才能获得类似于main.r在 Splus 工作的东西?

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 回答