[Rd] rm() deletes 'c' if c('a','b') is the argument (PR#9399)

bill at insightful.com bill at insightful.com
Wed Nov 29 23:04:17 CET 2006

On Wed, 29 Nov 2006 p.dalgaard at biostat.ku.dk wrote:

> > A character vector c('a','b') is supplied to rm().
> > As a result, 'c' is deleted unintentionally.
> > ...
> >> a <- 1:5
> >> b <- 'abc'
> >> c <- letters
> >> ls()
> > [1] "a" "b" "c"
> >> rm(c('a','b'))
> >> ls()
> > character(0)
> ...
> I don't know if it really qualifies as a bug, but it's not documented
> that as.character() is used and I suppose we could be more careful with
> the argument checking.

I suggest that if any changes are made, then
rm(c('a','b')) should throw an error.

Functions which try to be "user-friendly" by
letting you omit quotes are generally a bad
idea, IMO.  They all need patching up in various
ways to work in all situation (e.g., library's
character.only=TRUE argument and the complicated
code in help to see what the topic really is).

Perhaps rm() should be deprecated in favor of
remove(), which uses standard S syntax rules.

Bill Dunlap
Insightful Corporation
bill at insightful dot com

 "All statements in this message represent the opinions of the author and do
 not necessarily reflect Insightful Corporation policy or position."

More information about the R-devel mailing list