PoliticaArgentina / geoAr

🌎 🇦🇷 spatial toolbox for R
https://politicaargentina.github.io/geoAr/
Other
15 stars 2 forks source link

ERROR: get_ubicacion #9

Closed TuQmano closed 1 year ago

TuQmano commented 1 year ago

Esta solicitud con lat , lon en CABA devuelve error (por cols con valores NULL, incompatible al transformar el output como tibble)

https://github.com/PoliticaArgentina/geoAr/blob/5ae01e6a8884b2a6d19c603fb343d5a8f31ac204/R/georefar.R#L249

> geoAr::get_ubicacion(lat = -34.54531, lon = -58.45196)
Error:
! All columns in a tibble must be vectors.
x Column `municipio_id` is NULL.
x Column `municipio_nombre` is NULL.
TuQmano commented 1 year ago

Resuleto en https://github.com/PoliticaArgentina/geoAr/commit/524a42ef19d7307c1396b633666884ce591b7c0d

Para hacerlo se transforma la columna con valores NULL (sin filas) en una lista, previo a transformar el output con as_tibble (siguiendo esta referencia) usando la función condicional modify_if de la libería purrr:

jsonlite::fromJSON(httr::content(res, "text"))$ubicacion %>% 
    purrr::modify_if(is.null, list) %>%
    dplyr::as_tibble() %>% suppressMessages()

El resultado de la consulta análoga a la del bug reportado, en el que las columnas con valores NULL (donde no hay subdivisión política por debajo de DEPARTAMENTO ~ col3) son ahora de type list:

get_ubicacion("-34.54531", "-58.45196")
# A tibble: 1 x 8
  departamento_id departamento_no~1   lat   lon munic~2 munic~3 provi~4 provi~5
  <chr>           <chr>             <dbl> <dbl> <list>  <list>  <chr>   <chr>  
1 02091           Comuna 13         -34.5 -58.5 <NULL>  <NULL>  02      Ciudad~
# ... with abbreviated variable names 1: departamento_nombre, 2: municipio_id,
#   3: municipio_nombre, 4: provincia_id, 5: provincia_nombre