r ggplot2 broom

Sucesor de ggplot2:: fortify



broom (2)

En la versión más reciente de ggplot2 returns:

Descripción

En lugar de utilizar esta función, ahora recomiendo usar el paquete de escoba , que implementa una gama mucho más amplia de métodos. fortify puede ser desaprobado en el futuro.

El paquete de broom ofrece muchas alternativas (como el augment ). ¿Cuál debería usarse en qué circunstancias?

Estoy particularmente interesado en una alternativa para fortify(spdf) donde spdf es un SpatialPolygonsDataFrame.


Así es como me acerqué al tema.

Después de buscar "bran cran" fui redirigido a la página correspondiente del paquete en CRAN. Ofrece algunas viñetas así que revisé Introducción a la escoba . Después de no poder encontrar ninguna cadena que coincidiera con "espacial", cerré el PDF y abrí el manual de referencia . Buscando "espacial" obtuve 7 éxitos, el primero sobre el tema de sp_tidiers. El tidy función se anuncia para convertir un objeto espacial en un data.frame. Vamos a intentarlo.

library(sp) Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2))) Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2))) Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5))) Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE) Srs1 = Polygons(list(Sr1), "s1") Srs2 = Polygons(list(Sr2), "s2") Srs3 = Polygons(list(Sr3, Sr4), "s3/4") x = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3) library(broom) tidy(x) long lat order hole piece group id 1 2 2 1 FALSE 1 s1.1 s1 2 1 4 2 FALSE 1 s1.1 s1 3 4 5 3 FALSE 1 s1.1 s1 4 4 3 4 FALSE 1 s1.1 s1 5 2 2 5 FALSE 1 s1.1 s1 6 5 2 1 FALSE 1 s2.1 s2 7 2 2 2 FALSE 1 s2.1 s2 8 4 3 3 FALSE 1 s2.1 s2 9 5 2 4 FALSE 1 s2.1 s2 10 4 5 1 FALSE 1 s3/4.1 s3/4 11 10 5 2 FALSE 1 s3/4.1 s3/4 12 5 2 3 FALSE 1 s3/4.1 s3/4 13 4 3 4 FALSE 1 s3/4.1 s3/4 14 4 5 5 FALSE 1 s3/4.1 s3/4 15 5 4 6 TRUE 2 s3/4.2 s3/4 16 5 3 7 TRUE 2 s3/4.2 s3/4 17 6 3 8 TRUE 2 s3/4.2 s3/4 18 6 4 9 TRUE 2 s3/4.2 s3/4 19 5 4 10 TRUE 2 s3/4.2 s3/4


Publicando esto para mostrar únicamente que la versión tidy está casi duplicada de la versión fortify Incluso dice tanto en los documentos tidy :

Estas funciones se originaron en el paquete ggplot2 como funciones "fortificar".

broom:::tidy.SpatialPolygonsDataFrame

function (x, region = NULL, ...) { attr <- as.data.frame(x) if (is.null(region)) { coords <- ldply(x@polygons, tidy) message("Regions defined for each Polygons") } else { cp <- sp::polygons(x) unioned <- maptools::unionSpatialPolygons(cp, attr[, region]) coords <- tidy(unioned) coords$order <- 1:nrow(coords) } coords }

ggplot2:::fortify.SpatialPolygonsDataFrame

function (model, data, region = NULL, ...) { attr <- as.data.frame(model) if (is.null(region)) { coords <- plyr::ldply(model@polygons, fortify) message("Regions defined for each Polygons") } else { cp <- sp::polygons(model) unioned <- maptools::unionSpatialPolygons(cp, attr[, region]) coords <- fortify(unioned) coords$order <- 1:nrow(coords) } coords }

Digo cerca, ya que las sutiles diferencias en la implementación tidy (vs fortify ) causan diferencias en el orden de las columnas de data.frame generadas. Por lo tanto, tienen todo el equipaje de "lentitud" que tiene la versión fortify en objetos espaciales más grandes y no hay una razón convincente para cambiar (IMO) hasta que fortify se desaproveche.