Learn R Programming

tidyterra (version 0.3.0)

pull.Spat: Extract a single layer/attribute

Description

pull() is similar to $ on a data frame. It's mostly useful because it looks a little nicer in pipes and it can optionally name the output.

It is possible to extract the geographic coordinates of a SpatRaster. You need to use pull(.data, x, xy = TRUE). x and y are reserved names on terra, since they refer to the geographic coordinates of the layer.

See Examples and section About layer names on as_tibble().

Usage

# S3 method for SpatRaster
pull(.data, var = -1, name = NULL, ...)

# S3 method for SpatVector pull(.data, var = -1, name = NULL, ...)

Value

A vector the same number of cells/geometries as .data.

On SpatRasters, note that the default (na.rm = FALSE) would remove empty cells, so you may need to pass (na.rm = FALSE) to .... See terra::as.data.frame().

Arguments

.data

A SpatRaster created with terra::rast() or a SpatVector created with terra::vect().

var

A variable specified as:

  • a literal layer/attribute name

  • a positive integer, giving the position counting from the left

  • a negative integer, giving the position counting from the right.

The default returns the last layer/attribute (on the assumption that's the column you've created most recently).

name

An optional parameter that specifies the column to be used as names for a named vector. Specified in a similar manner as var.

...

Arguments passed on to as_tibble()

terra equivalent

terra::values()

Methods

Implementation of the generic dplyr::pull() function.

SpatRaster

When using option na.rm = TRUE, only cells with a value distinct to NA are extracted. See terra::as.data.frame().

If xy = TRUE option is used, two columns names x and y (corresponding to the geographic coordinates of each cell) are available in position 1 and 2. Hence, pull(.data, 1) and pull(.data, 1, xy = TRUE) return different result.

SpatVector

See terra::as.data.frame() options.

See Also

dplyr::pull()

Other dplyr methods: filter.Spat, mutate.Spat, relocate.Spat, rename.Spat, select.Spat, slice.Spat

Examples

Run this code

library(terra)
f <- system.file("extdata/cyl_tile.tif", package = "tidyterra")
r <- rast(f)

# Extract second layer
r %>%
  pull(2) %>%
  head()

# With xy the first two cols are `x` (longitude) and `y` (latitude)

r %>%
  pull(2, xy = TRUE) %>%
  head()

# With renaming

r %>%
  mutate(cat = cut(cyl_tile_3, c(0, 100, 300))) %>%
  pull(cyl_tile_3, name = cat) %>%
  head()

Run the code above in your browser using DataLab