R:rm(list = ls())有什么作用?

时间:2018-07-26 17:00:27

标签: r

在查看其他人编写的一些R代码时,我发现在文档rm(list=ls())的顶部附近。我尝试查找rm函数的作用,并且据我所知,它从工作空间中删除了指定的变量,因此,如果您在某处有x=3,则在运行rm(x)之后x的行为就像从未分配过(例如,如果您尝试打印它,则会抛出错误)。

但是如果我有这个权利,那么其余的代码很奇怪,因为它似乎正在删除空列表。所以它什么也不做,对吧?是否有理由在这里使用此代码?

2 个答案:

答案 0 :(得分:5)

我认为rm函数的参数列表令人困惑,至少在我开始使用R时对我来说是这样。list参数实际上不应该是一个列表,而是一个字符向量。 ls函数的确会返回一个在调用环境中可见的所有命名对象的字符向量,并且如果没有为其envir参数提供其他值,它将使用默认值。如果在控制台上执行此操作,则默认环境为全局环境。因此,这将清除所有“可见”对象(但不会清除其他命名空间或环境中定义的对象,例如basegraphicsstats或其他已加载的程序包中存在的对象)命名空间。

因此,现在来看一下?ls?rm,以更好地了解它们的功能。特别是,新的useR应该弄清楚R names(即symbols)与它们的字符表示之间的区别。 ls函数实际上已经达到R的实现的语言级别,并且返回一个非语言级别的值,而rm通常采用语言级别的输入...,除非(在这种情况下)向其“列表”参数提供一个值,而不是R列表。明确?也许希望如此。

答案 1 :(得分:2)

它将清除工作空间中的所有对象。