R 中栅格值的部分匹配

问题描述 投票:0回答:1

我有一个在单元格中包含文本值的栅格,我需要查找出现某个单词的单元格。对于向量,我会使用

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

但是我的数据不允许完全匹配。如何查找字符串中包含单词的栅格像元值?

r pattern-matching grepl terra
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.