Nothing
#' Order a `SpatVector` using column values
#'
#' @description
#' `arrange.SpatVector()` orders the geometries of a `SpatVector` by the
#' values of selected columns.
#'
#' @export
#' @rdname arrange.SpatVector
#' @name arrange.SpatVector
#'
#' @seealso [dplyr::arrange()]
#'
#' @family single table verbs
#' @family dplyr.rows
#' @family dplyr.methods
#'
#' @importFrom dplyr arrange
#'
#' @param ... <[`data-masking`][rlang::args_data_masking]> Variables, or
#' functions of variables. Use [`desc()`][dplyr::desc()] to sort a variable in
#' descending order.
#'
#' @inheritParams distinct.SpatVector
#' @param .by_group If `TRUE`, will sort first by grouping variable. Applies to
#' grouped `SpatVector` only (see [group_by.SpatVector()]).
#'
#' @return A `SpatVector` object.
#'
#'
#' @section \CRANpkg{terra} equivalent:
#'
#' [terra::sort()]
#'
#' @section Methods:
#'
#' Implementation of the **generic** [dplyr::arrange()] function for
#' `SpatVector` class.
#'
#'
#' @examples
#'
#' library(terra)
#' library(dplyr)
#'
#' v <- vect(system.file("extdata/cyl.gpkg", package = "tidyterra"))
#'
#'
#' # Single variable
#'
#' v %>%
#' arrange(desc(iso2))
#'
#'
#' # Two variables
#' v %>%
#' mutate(even = as.double(cpro) %% 2 == 0, ) %>%
#' arrange(desc(even), desc(iso2))
#'
#'
#' # With new variables
#' v %>%
#' mutate(area_geom = terra::expanse(v)) %>%
#' arrange(area_geom)
arrange.SpatVector <- function(.data, ..., .by_group = FALSE) {
# Use index
indexvar <- make_safe_index("tterra_index", .data)
# Use as_tibble conversion avoiding geom
tbl <- as_tibble(.data)
tbl[[indexvar]] <- seq_len(nrow(tbl))
arranged <- dplyr::arrange(tbl, ..., .by_group = .by_group)
# Regenerate
vend <- .data
vend <- vend[arranged[[indexvar]], ]
vend <- group_prepare_spat(vend, arranged)
return(vend)
}
#' @export
dplyr::arrange
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.