From jmacdon at med.umich.edu  Wed Nov 29 20:14:40 2006
From: jmacdon at med.umich.edu (James W. MacDonald)
Date: Wed, 29 Nov 2006 14:14:40 -0500
Subject: [Rd] rm() deletes 'c' if c('a','b') is the argument (PR#9399)
In-Reply-To: <0BE438149FF2254DB4199E2682C8DFEB0235F9FA@crcmail1.BCCRC.CA>
References: <20061129183537.0F42D5734F@slim.kubism.ku.dk>
	<0BE438149FF2254DB4199E2682C8DFEB0235F9FA@crcmail1.BCCRC.CA>
Message-ID: <456DDC20.3000002@med.umich.edu>

That's because you are not using rm() correctly. From the help page:

Arguments:

      ...: the objects to be removed, supplied individually and/or as a
           character vector

     list: a character vector naming objects to be removed.

So if you pass an unnamed argument, rm() will assume you have some 
objects in the .GlobalEnv with those names that you would like to 
remove. If you want to pass a character vector, you have to name it 
because the first argument is '...'.

 > a <- 1:5
 > b <- 2:10
 > c <- "not a good variable name"
 > rm(list=c("a","b"))
 > c
[1] "not a good variable name"

 > a <- 1:5
 > b <- 2:10
 > c <- "still not a good variable name"
 > rm(a,b)
 > c
[1] "still not a good variable name"

 > a <- 1:5
 > b <- 2:10
 > c <- "still not a good variable name"
 > rm("a","b")
 > c
[1] "still not a good variable name"


NB: 'c' is not a good variable name because you are masking an existing 
function.

An argument could be made that the explanation for the first argument is 
not very exact.

Best,

Jim



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)
> 
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel


-- 
James W. MacDonald, M.S.
Biostatistician
Affymetrix and cDNA Microarray Core
University of Michigan Cancer Center
1500 E. Medical Center Drive
7410 CCGC
Ann Arbor MI 48109
734-647-5623


**********************************************************
Electronic Mail is not secure, may not be read every day, and should not be used for urgent or sensitive issues.



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