rm()不删除存在的对象

时间:2015-05-07 19:58:30

标签: r

很抱歉,我没有可以重现此代码的代码,因为我不知道如何重现它。我试过了(编辑:尝试显示在下方)。这是大型项目的一部分。

Browse[1]> exists("startPoint")
[1] TRUE
Browse[1]> rm(startPoint)
Warning message:
In rm(startPoint) : object 'startPoint' not found
Browse[1]> startPoint
[1] 1037

这怎么可能? 我load()从以前保存的文件中编辑了startPoint,并在load()之后放置了一个浏览器,所以我很确定它有某种范围问题,但我不知道如何隔离它。

这一切都发生在一个函数中,所以它减少到

myFun <- function({
#lots of code
load(file = "filethatcontainsstartpoint")
if (exists("startPoint"))
  rm(startPoint)
#lots of code
})
另一条评论之后

第二次修改

我试过了,但它运作正常

A<-B<-1
save(A,B,file = "boringfile")
rm(A)
rm(B)
testFunct <- function({browser();load("boringfile");print(A)})
testFunct()
Called from: testFunct()
Browse[1]> n
debug at #1: load("boringfile")
Browse[2]> n
debug at #1: print(A)
Browse[2]> A
[1] 1
Browse[2]> B
[1] 1
Browse[2]> rm(A)
Browse[2]> A
Error: object 'A' not found

正如所料。 如果保存是在函数内而不是在全局环境中完成的,那么这也可以按预期运行。 另外我不确定你为什么认为相关的目的,但是: 我有一些文件包含一个变量,如果它包含在文件中,我想删除它。大约一半的文件都有这个变量,所以我嵌入了一个加载,检查存在,删除,重新保存在我的程序中。当浏览时,我发现此“未找到”错误,然后使用browser()进行调查。

不要浪费任何时间提出解决方法,这很容易,我只是希望了解这个具体问题,如果有人知道的话。我没想到因为我无法进行MRE工作

0 个答案:

没有答案