在查看其他人编写的一些R代码时,我发现在文档rm(list=ls())
的顶部附近。我尝试查找rm
函数的作用,并且据我所知,它从工作空间中删除了指定的变量,因此,如果您在某处有x=3
,则在运行rm(x)
之后x
的行为就像从未分配过(例如,如果您尝试打印它,则会抛出错误)。
但是如果我有这个权利,那么其余的代码很奇怪,因为它似乎正在删除空列表。所以它什么也不做,对吧?是否有理由在这里使用此代码?
答案 0 :(得分:5)
我认为rm
函数的参数列表令人困惑,至少在我开始使用R时对我来说是这样。list
参数实际上不应该是一个列表,而是一个字符向量。 ls
函数的确会返回一个在调用环境中可见的所有命名对象的字符向量,并且如果没有为其envir
参数提供其他值,它将使用默认值。如果在控制台上执行此操作,则默认环境为全局环境。因此,这将清除所有“可见”对象(但不会清除其他命名空间或环境中定义的对象,例如base
,graphics
,stats
或其他已加载的程序包中存在的对象)命名空间。
因此,现在来看一下?ls
和?rm
,以更好地了解它们的功能。特别是,新的useR应该弄清楚R names
(即symbols
)与它们的字符表示之间的区别。 ls
函数实际上已经达到R的实现的语言级别,并且返回一个非语言级别的值,而rm
通常采用语言级别的输入...,除非(在这种情况下)向其“列表”参数提供一个值,而不是R列表。明确?也许希望如此。
答案 1 :(得分:2)
它将清除工作空间中的所有对象。