"<-" and "=" are not universally interchangable.

args(rm)
function (..., list = character(0L), pos = -1, envir = as.environment(pos), inherits = FALSE)


The call
rm(list <- ls())
assigns the result of ls() to the variable 'list' and passes that value as an 
anonymous argument to rm() (Probably more than you want to know: or it would if 
rm() didn't have non-standard evaluation rules -- as it happens, list <- ls() 
is recognized as an invalid argument before it is evaluated.)

The call
rm(list=ls())
calls rm() with the 'list' argument having the value of ls()

Here's an example that doesn't confuse things by having non-standard evaluation 
rules:

f <- function(a=1, b=2) cat("a=", a, "b=", b, "\n")
b
Error: object 'b' not found
f(b <- 33)
a= 33 b= 2
b
[1] 33
f(b=33)
a= 1 b= 33


-- Tony Plate



Feng Li wrote:
Dear R,

Why rm(list<-ls()) gives an error but rm(list=ls()) not? I remember the
operator ‘<-’ can be used anywhere...


Thanks!


Feng



------------------------------------------------------------------------

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to