gpt4 book ai didi

r - Eloquent 地更改 R 中的许多栅格单元值

转载 作者:行者123 更新时间:2023-12-01 07:40:37 25 4
gpt4 key购买 nike

我有一个 Landfire Existing Vegetation 数据集 (http://www.landfire.gov/),我已将其投影并裁剪到我的研究站点。栅格有大约 12,000,000 个像元。像元值代表特定的植被类型,值范围为 16:2200。所有这些值都没有出现在我的研究领域(即值从 20 跳到 1087)。

由于出于我的目的,许多像素的值可以归为一个类别(例如,不同的灌木群落归为一类),因此我想将栅格值重置为更简单的值 (1:11)。这将有助于按植被类型从其他栅格中轻松提取数据,并易于绘制分类图。我有一个工作代码,但它需要大量输入才能更改我需要更改的所有 61 个值。这是我所做的:

#===============================
############Example#############
#===============================

library(raster)
r <- raster(nrows=30, ncols=10, xmn=0, xmx=10)
r[] <- rep(10:19, 30)

r.omance <- function(x){
x[x==10] <- 1; x[x==11] <- 1; x[x==12] <- 1
x[x==13] <- 1; x[x==14] <- 1; x[x==15] <- 1

x[x==16] <- 2; x[x==17] <- 2; x[x==18] <- 2
x[x==19] <- 2
return(x)}

reclass <- calc(r, fun = r.omance)

有谁知道更简单的方法来解决这个问题?您可以想象键入要更改 61 个值,尤其是因为 x[x==16:20] <- 1 产生错误,因此必须单独键入每个值。正如我所说,我的代码有效。但我只想成为一个更好的 R 编码员。

谢谢。

最佳答案

您可以使用 %in% :

x %in% c(1,4,3:10)

这:
x[x==10] <- 1; x[x==11] <- 1; x[x==12] <- 1
x[x==13] <- 1; x[x==14] <- 1; x[x==15] <- 1

将减少到:
x[x %in% 10:15]

关于r - Eloquent 地更改 R 中的许多栅格单元值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16185085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com