我有一个在单元格中包含文本值的栅格,我需要查找出现某个单词的单元格。对于向量,我会使用
grepl
,但是将其应用于栅格单元值会返回所有 FALSE
。
library(terra)
x <- rast(ncol = 10, nrow = 10)
x[] <- sample(c("AA", "AB", "BB"), size = 100, replace = TRUE)
a <- app(x, fun = \(i) grepl("A", i))
a
# class : SpatRaster
# dimensions : 10, 10, 1 (nrow, ncol, nlyr)
# resolution : 36, 18 (x, y)
# extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
# coord. ref. : lon/lat WGS 84
# source(s) : memory
# name : lyr.1
# min value : 0
# max value : 0
我可以通过以下方式模仿所需的行为:
A <- (x == "AA") + (x == "AB")
A <- A > 0
但是我的数据不允许完全匹配。如何查找字符串中包含单词的栅格像元值?
我很少使用 terra,但这也许就是您所需要的?
library(tidyverse)
x %>%
as.data.frame(xy = TRUE) %>%
mutate(withA = grepl("A", lyr.1)) %>%
ggplot() + geom_raster(aes(x = x, y = y, fill = withA))