2012-10-30 3 views
2

Possible en double:
Data frame transformation gives different results when same code is run before and after attaching (apparently) unrelated packagesTransformer et Réorganiser

Je vais avoir un peu d'un problème. J'avais l'habitude d'utiliser cette méthode pour réorganiser rapidement les facteurs à tracer avec ggplot2. Mais il ne semble pas fonctionner:

tmp <- data.frame(Letters=letters[1:26],values=rnorm(26)) 
tmp <- transform(tmp, Letters = reorder(Letters,values)) 

identical(levels(tmp$Letters),letters[1:26]) # True! but shouldn't it be reorderd? 

Qu'est-ce qui se passe ici?

SessionInfo()

R version 2.15.2 (2012-10-26) 
Platform: i686-pc-linux-gnu (32-bit) 

locale: 
[1] LC_CTYPE=en_CA.UTF-8  LC_NUMERIC=C    LC_TIME=en_CA.UTF-8  
[4] LC_COLLATE=en_CA.UTF-8  LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 
[7] LC_PAPER=C     LC_NAME=C     LC_ADDRESS=C    
[10] LC_TELEPHONE=C    LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] tools  stats  graphics grDevices utils  methods base  

other attached packages: 
[1] reshape_0.8.4 digest_0.5.2 plyr_1.7.1  ggplot2_0.9.2.1 

loaded via a namespace (and not attached): 
[1] brew_1.0-6   colorspace_1.2-0 dichromat_1.2-4 evaluate_0.4.2  grid_2.15.2  
[6] gtable_0.1.1  gtools_2.7.0  httr_0.2   labeling_0.1  MASS_7.3-22  
[11] memoise_0.1  munsell_0.4  parallel_2.15.2 proto_0.3-9.2  RColorBrewer_1.0-5 
[16] RCurl_1.95-1.1  reshape2_1.2.1  scales_0.2.2  stringr_0.6.1  whisker_0.1  
+0

Cela me renvoie FALSE (sous R 2.15.2 sous Windows). –

+0

retourne 'FAUX 'pour moi aussi. R 2.15.2 sur OSX. – Maiasaura

+0

Vos résultats sont ce que j'attendrais aussi. Mais, pour une raison quelconque, VRAI. –

Répondre

2

gdata définit une méthode reorder.factor qui a un comportement différent qui reorder.default appliqué à des facteurs. Voir une discussion plus détaillée dans this other question.

J'ai inclus une transcription de ce comportement, avec et sans gdata, commençant dans une nouvelle session ci-dessous; Notez qu'une fois que vous avez chargé gdata, il est très difficile de se débarrasser de cette méthode (for reasons explored here).

> tmp <- data.frame(Letters=letters[1:26],values=rnorm(26)) 
> tmp <- transform(tmp, Letters = reorder(Letters,values)) 
> 
> identical(levels(tmp$Letters),letters[1:26]) 
[1] FALSE 
> sessionInfo() 
R version 2.15.2 (2012-10-26) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  
> 
> library("gdata") 
gdata: read.xls support for 'XLS' (Excel 97-2004) files ENABLED. 

gdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED. 

Attaching package: ‘gdata’ 

The following object(s) are masked from ‘package:stats’: 

    nobs 

The following object(s) are masked from ‘package:utils’: 

    object.size 

> 
> tmp <- data.frame(Letters=letters[1:26],values=rnorm(26)) 
> tmp <- transform(tmp, Letters = reorder(Letters,values)) 
> 
> identical(levels(tmp$Letters),letters[1:26]) 
[1] TRUE 
> sessionInfo() 
R version 2.15.2 (2012-10-26) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] gdata_2.12.0 

loaded via a namespace (and not attached): 
[1] gtools_2.7.0 
+0

@JoshOBrien, merci pour l'édition. Je me suis souvenu qu'il y avait eu une discussion de suivi, mais je n'ai pas cherché à la relier. Je suis content que tu l'aies fait. –

+0

Bien sûr. Il y avait une bonne raison pour que nous nous souvenions du problème 'gdata :: reorder.factor'. –