根据R手册,
运算符< - 可以在任何地方使用,而operator =仅允许在顶层(例如,在命令提示符下键入的完整表达式中)
所以,我想RM(名单<-ls()),因为< - 如上面所述的操作可以在任何地方使用,但[R给了我一个错误说"......必须包含名称或字符串".
rm(list = ls())没有任何问题.据我所知,< - 是一个更普遍的任务,而=可以在更严格的情况下使用.但是为什么使用< - 在'rm'函数时会出错?
这是因为rm()默认情况下使用非标准评估.它会尝试删除您为非list=(pos=或env=或inherits=)参数输入的字面值.
所以你可以做到
a <- 10
rm(a)
Run Code Online (Sandbox Code Playgroud)
请注意,a它只是被解释为符号.它没有被评估为返回值.当你打电话的时候,rm(list<-ls())你期待评估表达式,但事实并非如此.它试图找到一个名为变量,"list<-ls()"但不存在这样的变量,因为没有变量应该有这样的名称.此外,它必须是"有效"的变量名称.从?make.names帮助页面
语法上有效的名称由字母,数字和点或下划线字符组成,以字母或点开头,后面没有数字
这意味着它不会解析不常见的变量名称,例如您可以通过使用后标记或单引号转义符号来进行解析.从技术上讲,你也可以这样做
a <- 10
rm("a")
Run Code Online (Sandbox Code Playgroud)
因为非标准评估检查参数是否是文字字符值.但它仍然不会评估任何表达式,即使它们最终会返回一个字符值.例如
a <- 10
b <- "a"
rm(b)
Run Code Online (Sandbox Code Playgroud)
上面发生的b是删除,而不是a.
如果要传递一个将变量名称作为stirngs返回的函数(同样ls()如此),则需要使用named list=参数.该<-运营商不作为替代工作=的命名参数.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |