[Rd] rm() deletes 'c' if c('a','b') is the argument (PR#9399)
p.dalgaard at biostat.ku.dk
p.dalgaard at biostat.ku.dk
Wed Nov 29 21:31:22 CET 2006
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.
More information about the R-devel
mailing list