我有一个根代码,其中有许多脚本。例如,在运行了前4个脚本之后,我可能需要取消从第4个脚本获得的环境中的对象。有可能吗?另一种选择是rm((,但通过这种方式,我必须重新运行所有脚本,这需要一段时间,因为我要加载很多数据。
定义函数rm_new()
(在"根代码"中(:
rm_new=function( old ) {
current=ls(,envir=parent.frame())
to_delete = current[!(current %in% old)]
rm( list=to_delete,envir=parent.frame() )
}
当你到达"根代码"的末尾时,记住你想保留的对象:
obj_to_keep=c("obj_to_keep",ls())
现在,您可以添加任何您喜欢的内容,并在完成后使用rm_new((将其删除:
a=1:100
obj_to_keep=c("obj_to_keep",ls())
b=1:50
ls()
# [1] "a" "b" "obj_to_keep" "rm_new"
rm_new( old=obj_to_keep )
ls()
# [1] "a" "obj_to_keep" "rm_new"