Steven McKinney wrote:
Same behaviour seen on Apple Mac OSX 10.4.8 platform:
sessionInfo()
R version 2.4.0 Patched (2006-10-31 r39758)
powerpc-apple-darwin8.8.0
locale:
en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8
attached base packages:
[1] "methods" "stats" "graphics" "grDevices" "utils" "datasets" "base"
other attached packages:
XML
"1.2-0"
ls()
[1] "getMonograph" "last.warning" "myfun"
a <- 1
b <- 2
c <- letters
a
[1] 1
b
[1] 2
c
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
rm(c('a', 'b'))
a
Error: object "a" not found
b
Error: object "b" not found
c
.Primitive("c")
ls()
[1] "getMonograph" "last.warning" "myfun"
a <- 1
b <- 2
d <- letters
ls()
[1] "a" "b" "d" "getMonograph" "last.warning" "myfun"
rm(c('a', 'b'))
Warning message: remove: variable "c" was not found
ls()
[1] "d" "getMonograph" "last.warning" "myfun"
Steven McKinney
Statistician
Molecular Oncology and Breast Cancer Program
British Columbia Cancer Research Centre
email: smckinney at bccrc.ca
tel: 604-675-8000 x7561
BCCRC
Molecular Oncology
675 West 10th Ave, Floor 4
Vancouver B.C.
V5Z 1L3
Canada
-----Original Message-----
From: r-devel-bounces at r-project.org on behalf of hanl2 at wyeth.com
Sent: Wed 11/29/2006 10:35 AM
To: r-devel at stat.math.ethz.ch
Cc: R-bugs at biostat.ku.dk
Subject: [Rd] rm() deletes 'c' if c('a','b') is the argument (PR#9399)
Full_Name: Lixin Han
Version: 2.4.0
OS: Windows 2000
Submission from: (NULL) (155.94.110.222)
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)
The reason is that
> x <- function(...) sapply(match.call(expand.dots = FALSE)$...,
as.character)
> x(c(a,b))
[,1]
[1,] "c"
[2,] "a"
[3,] "b"
Which in turn happens because
> as.character(quote(c(a,b)))
[1] "c" "a" "b"
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.