El factor de reordenación ofrece diferentes resultados, dependiendo de qué paquetes están cargados
namespaces masking (1)
Esto sucede porque:
-
gmodels
importagdata
-
gdata
crea un nuevo método parareorder.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