r namespaces masking order

El factor de reordenación ofrece diferentes resultados, dependiendo de qué paquetes están cargados



namespaces masking (1)

Esto sucede porque:

  1. gmodels importa gdata
  2. gdata crea un nuevo método para reorder.factor

Comience una sesión limpia. Entonces:

methods("reorder") [1] reorder.default* reorder.dendrogram*

Ahora cargue gdata (o cargue gmodels , que tiene el mismo efecto):

library(gdata) methods("reorder") [1] reorder.default* reorder.dendrogram* reorder.factor

Observe que no hay enmascaramiento, ya que reorder.factor no existe en la base

Vuelva a crear el problema, pero esta vez llame explícitamente a los diferentes paquetes:

group = c("C","F","D","B","A","E") num = c(12,11,7,7,2,1) data = data.frame(group,num)

La versión R base (usando reorder.default ):

str(transform(data, group=stats:::reorder.default(group,-num))) ''data.frame'': 6 obs. of 2 variables: $ group: Factor w/ 6 levels "C","F","B","D",..: 1 2 4 3 5 6 ..- attr(*, "scores")= num [1:6(1d)] -2 -7 -12 -7 -1 -11 .. ..- attr(*, "dimnames")=List of 1 .. .. ..$ : chr "A" "B" "C" "D" ... $ num : num 12 11 7 7 2 1

La versión de gdata (usando reorder.factor ):

str(transform(data, group=gdata:::reorder.factor(group,-num))) ''data.frame'': 6 obs. of 2 variables: $ group: Factor w/ 6 levels "A","B","C","D",..: 3 6 4 2 1 5 $ num : num 12 11 7 7 2 1

Quería crear una barra de barras en la que las barras se ordenaran por altura en vez de alfabéticamente por categoría. Esto funcionó bien cuando el único paquete que cargué fue ggplot2. Sin embargo, cuando cargué algunos paquetes más y ejecuté el mismo código que creó, ordenó y trazó mi marco de datos, las barras volvieron a ordenarse alfabéticamente de nuevo.

Comprobé el marco de datos cada vez usando str() y resultó que los atributos del marco de datos ahora eran diferentes, a pesar de que corría el mismo código cada vez.

Mi código y salida se enumeran a continuación. ¿Alguien puede explicar el comportamiento diferente? ¿Por qué cargar algunos paquetes aparentemente no relacionados (no relacionados en el sentido de que ninguna de las funciones que estoy usando parecen estar enmascaradas por los paquetes recién cargados) cambia el resultado de ejecutar la función transform() ?

Caso 1: acaba de cargar ggplot2

library(ggplot2) group = c("C","F","D","B","A","E") num = c(12,11,7,7,2,1) data = data.frame(group,num) data1 = transform(data, group=reorder(group,-num)) > str(data1) ''data.frame'': 6 obs. of 2 variables: $ group: Factor w/ 6 levels "C","F","B","D",..: 1 2 4 3 5 6 ..- attr(*, "scores")= num [1:6(1d)] -2 -7 -12 -7 -1 -11 .. ..- attr(*, "dimnames")=List of 1 .. .. ..$ : chr "A" "B" "C" "D" ... $ num : num 12 11 7 7 2 1

Caso 2: cargue varios paquetes más, luego vuelva a ejecutar el mismo código

library(plyr) library(xtable) library(Hmisc) library(gmodels) library(reshape2) library(vcd) library(lattice) group = c("C","F","D","B","A","E") num = c(12,11,7,7,2,1) data = data.frame(group,num) data1 = transform(data, group=reorder(group,-num)) > str(data1) ''data.frame'': 6 obs. of 2 variables: $ group: Factor w/ 6 levels "A","B","C","D",..: 3 6 4 2 1 5 $ num : num 12 11 7 7 2 1

ACTUALIZACIÓN: SessionInfo ()

Caso 1: ejecutó sessionInfo () después de cargar ggplot2

> sessionInfo() R version 2.15.0 (2012-03-30) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) locale: [1] C/en_US.UTF-8/C/C/C/C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] ggplot2_0.9.1 loaded via a namespace (and not attached): [1] MASS_7.3-18 RColorBrewer_1.0-5 colorspace_1.1-1 dichromat_1.2-4 digest_0.5.2 grid_2.15.0 [7] labeling_0.1 memoise_0.1 munsell_0.3 plyr_1.7.1 proto_0.3-9.2 reshape2_1.2.1 [13] scales_0.2.1 stringr_0.6 tools_2.15.0

Caso 2: corrió sessionInfo () después de cargar los paquetes adicionales

> sessionInfo() R version 2.15.0 (2012-03-30) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) locale: [1] C/en_US.UTF-8/C/C/C/C attached base packages: [1] grid splines stats graphics grDevices utils datasets methods base other attached packages: [1] lattice_0.20-6 vcd_1.2-13 colorspace_1.1-1 MASS_7.3-18 reshape2_1.2.1 gmodels_2.15.2 [7] Hmisc_3.9-3 survival_2.36-14 xtable_1.7-0 plyr_1.7.1 ggplot2_0.9.1 loaded via a namespace (and not attached): [1] RColorBrewer_1.0-5 cluster_1.14.2 dichromat_1.2-4 digest_0.5.2 gdata_2.8.2 gtools_2.6.2 [7] labeling_0.1 memoise_0.1 munsell_0.3 proto_0.3-9.2 scales_0.2.1 stringr_0.6 [13] tools_2.15.0