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

From: <p.dalgaard_at_biostat.ku.dk>
Date: Wed 29 Nov 2006 - 20:31:22 GMT


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@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@r-project.org on behalf of hanl2@wyeth.com
> Sent: Wed 11/29/2006 10:35 AM
> To: r-devel@stat.math.ethz.ch
> Cc: R-bugs@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.



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu Nov 30 07:43:59 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Thu 30 Nov 2006 - 09:30:53 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.