rm()未删除存在的对象

rm()未删除存在的对象,r,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()从以前保存

很抱歉,我没有可以复制的代码,因为我不知道如何复制它。我尝试过(编辑:尝试如下所示)。这是一个大型项目的一部分

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
})
myfunb
[1] 1
浏览[2]>rm(A)
浏览[2]>A
错误:找不到对象“A”
正如所料。 如果保存是在函数中而不是在全局环境中完成的,则也会按预期运行。 我也不确定为什么你认为这个目的是相关的,但是: 我有一些文件包含一个变量,如果该变量包含在文件中,我想将其删除。大约一半的文件都有这个变量,所以我在我的程序中嵌入了一个load、check existence、remove和resave。我在不浏览时遇到这个“未找到”错误,然后使用
browser()
进行调查


不要浪费任何时间想出一个解决办法,这很容易,我只是希望了解这个具体问题,如果有人刚刚知道的话。我没有太多期望,因为我无法使MRE工作

为什么您试图从浏览器中
rm
?我承认,当我尝试在浏览器中
rm
对象时,它似乎成功了,因此我无法真正解释您的困难。因为我在函数中得到了警告,所以我去了函数中它发生的地方啊。然后可能需要提供一个参数,例如
rm(“startPoint”,envir=environment(fnc_name))
。我不清楚这样做(从正在运行的函数中删除对象)是否有意义。现在的建议是,您没有清楚地描述情况。因此,我需要在函数本身中这样做吗?事实上,我有一个存在的检查,如果是的话,我有一个移除。我需要参考函数所在的环境,在函数中?我只是编辑它来显示它的样子。我不知道如何回答这个问题,因为删除它的目的和编程上下文都没有足够详细的描述。在你的问题中。。。编写代码。创建一个函数,将其保存到一个命名的Rdata对象,然后加载它并从那里开始。
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