#' Write geodata to a shapefile
#'
#' @param geodata (sf or sp object)
#' @param dsn (character) generally, a path on disk; see [sf::st_write()]
#' @param layer (character) layer name; see [sf::st_write()]
#' @param ... further arguments to [sf::write_sf()]
#' @param verbose (logical)
#'
#' @importFrom sf write_sf
#' @importFrom digest digest
#'
#' @return `geodata`, invisibly (to allow for chaining)
#'
#' @export
write_shp <- function (
  geodata,
  dsn = getwd(),
  layer = deparse(substitute(geodata)),
  ...,
  verbose = TRUE
) {
  msg <- function (...) if(isTRUE(verbose)) message("[write_shp] ", ...)
  if (!dir.exists(dsn)) {
    msg("creating directory: ", dsn)
    dir.create(dsn, recursive = TRUE)
  }
  dsn <- normalizePath(dsn, mustWork = TRUE)
  msg("writing ", nrow(geodata), " features to ", file.path(dsn, layer))
  msg("md5 is: ", digest::digest(geodata, algo = "md5"))
  sf::write_sf(
    geodata,
    dsn = dsn,
    layer = layer,
    driver = "ESRI Shapefile",
    quiet = !verbose,
    ...)
  # To allow for chaining, return the original input (invisibly)
  return(invisible(geodata))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.