这个问题在这里已经有了答案:
What is the difference between rm() and rm(list=ls())?
(2 个回答)
3年前关闭。
在查看其他人编写的一些 R 代码时,我发现靠近文档顶部 rm(list=ls())
.我试着查了一下 rm
函数确实如此,据我所知,它会从工作区中删除指定的变量,因此如果您有 x=3
某处,然后在运行后 rm(x)
变量 x
会表现得好像它从未被分配过(例如,如果您尝试打印它会抛出错误)。
但是如果我有这个权利,剩下的代码就很奇怪了,因为它似乎正在删除空列表。所以它根本没有做任何事情,对吧?有没有理由在这里有这个代码?
最佳答案
我认为 rm
的参数列表函数令人困惑,至少在我开始使用 R 时是这样。list
参数实际上不应该是一个列表,而是一个字符向量。 ls
-function 确实返回在调用它的环境中可见的所有命名对象的字符向量,并且如果没有为其 envir
提供其他值,则使用默认值。争论。如果在控制台执行此操作,则默认环境为全局环境。因此,这将清除所有“可见”对象(但不会清除在其他 namespace 或环境中定义的对象,例如存在于 base
、 graphics
、 stats
或其他加载的包 namespace 中的对象。
所以现在去看看?ls
和 ?rm
以更好地了解他们的能力。特别是新用户应该清楚 R names
之间的差异。 ,即 symbols
, 与它们的字符表示。 ls
函数真正达到 R 实现的语言级别并返回非语言级别的值,而 rm
通常采用语言级别的输入......除非(在这种情况下)为它的“列表”参数提供一个值,......这不是一个R列表。清除?也许,希望,多一点。
关于R: `rm(list=ls())` 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51544044/