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.Spat().
Arguments
- .data
A
SpatRastercreated withterra::rast()or aSpatVectorcreated withterra::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.Spat()
Value
A vector the same number of cells/geometries as .data.
On SpatRaster objects, 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().
terra equivalent
Methods
Implementation of the generic dplyr::pull() function. This is done
by coercing the Spat* object to a tibble first (see as_tibble.Spat) and
then using dplyr::pull() method over the tibble.
SpatRaster
When passing option na.rm = TRUE to ..., only cells with a value
distinct to NA are extracted. See terra::as.data.frame().
If xy = TRUE option is passed to ..., 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
When passing geom = "WKT"/geom = "HEX" to ..., the geometry of the
SpatVector can be pulled passing var = geometry. Similarly to
SpatRaster method, when using geom = "XY" the x,y coordinates can be
pulled with var = x/var = y. See terra::as.data.frame() options.
See also
Other dplyr verbs that operate on columns:
glimpse.Spat,
mutate.Spat,
relocate.Spat,
rename.Spat,
select.Spat
Other dplyr methods:
arrange.SpatVector(),
bind_cols.SpatVector,
bind_rows.SpatVector,
count.SpatVector(),
distinct.SpatVector(),
filter-joins.SpatVector,
filter.Spat,
glimpse.Spat,
group-by.SpatVector,
mutate-joins.SpatVector,
mutate.Spat,
relocate.Spat,
rename.Spat,
rowwise.SpatVector(),
select.Spat,
slice.Spat,
summarise.SpatVector()
Examples
library(terra)
f <- system.file("extdata/cyl_tile.tif", package = "tidyterra")
r <- rast(f)
# Extract second layer
r %>%
pull(2) %>%
head()
#> [1] 229 235 229 229 239 153
# With xy the first two cols are `x` (longitude) and `y` (latitude)
r %>%
pull(2, xy = TRUE) %>%
head()
#> [1] 5370160 5370160 5370160 5370160 5370160 5370160
# With renaming
r %>%
mutate(cat = cut(cyl_tile_3, c(0, 100, 300))) %>%
pull(cyl_tile_3, name = cat) %>%
head()
#> (100,300] (100,300] (100,300] (100,300] (100,300] (100,300]
#> 206 224 206 206 233 169
