我刚刚开始使用“datacamp”网站学习R,并且在开始时遇到了语法误解。
它说rm(list = ls())
是一个非常有用的命令,用于清除工作区中的所有内容,但我不明白list =
的用途。
一个。他们还没有教我R中=
的含义,我没有在文档中找到解释。 =
就像<-
?有什么不同?
湾如果rm()
的输入可以是变量名称列表,并且ls()
的输出是var名称列表,为什么我不能只使用rm(ls())
?
答案 0 :(得分:4)
按位置与名称传递参数
=
符号在命名函数调用的参数时起着特殊作用。
考虑两个基本相同的功能:
f <- function(..., y=3) (2+sum(...))^y
g <- function(y=3, ...) (2+sum(...))^y
如果未命名y=
,则结果通常不同:
f(y=5) # 32
g(y=5) # 32
f(5) # 343
g(5) # 32
rm
与f
类似,请点击?rm
- 所以如果您想致电rm(list = ls())
,请将其全部写完。
代表对象名称
在大多数R中,如果你写f(g())
,评估自然会流动:
g()
评估为8
并替换为f(g())
f(8)
f(8)
评估为1000
rm
在其未命名的...
参数中打破了这种模式,这些参数基本上只存在于交互式使用中。只允许手动输入变量名。†结果,rm(ls())
将无法运行。
哈德利威克姆provides another nice example:
ggplot2 <- "plyr" library(ggplot2) # loads ggplot2, not plyr!
†好的,您可以使用...
而无需手动输入名称,例如
do.call(library, as.list(ggplot2)) # loads plyr!
但除非你知道自己在做什么,否则不要乱用它。 子>