r - R: `rm(list=ls())` 有什么作用?
问题描述
在查看其他人编写的一些 R 代码时,我发现文档顶部附近rm(list=ls())
。我尝试查找该rm
函数的作用,据我所知,它会从工作区中删除指定的变量,因此如果您有x=3
某个地方,那么在运行rm(x)
该变量之后,它的x
行为就好像它从未被分配过(例如,会抛出如果您尝试打印它会出错)。
但是如果我有这个权利,那么其余的代码就很奇怪了,因为它似乎正在删除空列表。所以它根本没有做任何事情,对吧?这里有这个代码的理由吗?
解决方案
我认为该rm
函数的参数列表令人困惑,至少在我开始使用 R 时是这样。list
参数实际上不应该是一个列表,而是一个字符向量。-functionls
确实返回在调用它的环境中可见的所有命名对象的字符向量,并且如果没有为其envir
参数提供其他值,则使用默认值。如果您在控制台执行此操作,则默认环境是全局环境。因此,这将清除所有“可见”对象(但不会清除在其他命名空间或环境中定义的对象,例如存在于、base
或其他加载的包命名空间中的对象。graphics
stats
所以现在去看看?ls
并?rm
更好地了解他们的能力。特别是新用户应该清楚地了解 R 之间的差异names
,即symbols
与它们的字符表示。该ls
函数实际上进入了 R 实现的语言级别并返回一个非语言级别的值,而rm
通常需要一个语言级别的输入......除非(在这种情况下)它被提供了一个值到它的“列表” -参数,...这不是 R 列表。清除?也许,希望,更是如此。
推荐阅读
- java - 检查文件是否存在 java.nio
- android - Android Room:选择自定义对象列表,按特定属性删除重复项
- html - 使用jQuery单击图像时显示和隐藏相应的列表?
- c - C scanf() 格式化的行为
- javascript - 当字符串在双引号内有单引号时,如何在Javascript中将此字符串转换为JSON对象
- excel - Workbook.close 导致 sub 退出
- c++ - 如何运行 Wave 快速入门示例?
- vba - PowerPoint 加载项 将文本框添加到所选幻灯片
- c# - 在实现具有默认方法实现的接口的类上使用`GetMethod`返回null
- c# - LINQ 在更大的集合中找到一组值的 MAX 值