迭代R中的增量光栅值以创建新的光栅数据集

迭代R中的增量光栅值以创建新的光栅数据集,r,loops,sequence,increment,raster,R,Loops,Sequence,Increment,Raster,如果以前有人问过我这个问题,我表示歉意,但我无法找到解决问题的方法,我认为这是一个相当简单的问题。我有一个单源光栅数据集,其中包含100到500之间的连续浮动值。我想做的是以50为增量循环这个源光栅,以导出/创建所有小于增量的值的新光栅数据集。例如,我有以下R代码,使用光栅库指定光栅并标识增量。我想开发一种方法来自动创建9个小于或等于每个增量值的输出光栅数据集。我好像到不了那里。有人能帮忙吗?蒂亚 #Trying to iteratively create new raster datasets

如果以前有人问过我这个问题,我表示歉意,但我无法找到解决问题的方法,我认为这是一个相当简单的问题。我有一个单源光栅数据集,其中包含100到500之间的连续浮动值。我想做的是以50为增量循环这个源光栅,以导出/创建所有小于增量的值的新光栅数据集。例如,我有以下R代码,使用光栅库指定光栅并标识增量。我想开发一种方法来自动创建9个小于或等于每个增量值的输出光栅数据集。我好像到不了那里。有人能帮忙吗?蒂亚

#Trying to iteratively create new raster datasets 
#Based on increments of Source Raster

library(raster)

setwd("C:/Path/To/Folder")

r=raster("Source_Raster.tif") #Raster is floating between 100 and 500

#Create a list of increments I would like to use
list <-seq(100, 500, 50)
#The list creates the following sequence:
# 100 150 200 250 300 350 400 450 500

###THIS IS WHERE I STRUGGLE####
# I would like to use the sequence to create
# new raster datasets that only include values
# from the source raster that are less than or equal to each increment

# for example, the first output raster will contain values less than 
# or equal to the first increment (100)

r100 <- calc(r, fun=function(x){ x[x > 100] <- NA; return(x)} )

确定断点后,我们可以使用lappy函数创建每个光栅层。在本例中,r_列表是9个光栅图层的最终输出

library(raster)

set.seed(145)

# Create example raster
r <- raster(matrix(runif(100, min = 100, max = 500), ncol = 10))

# Create break points
brk <-seq(100, 500, 50)

# Conduct the operation, create nine raster than smaller than each break points
r_list <- lapply(brk, function(x){ 
  temp <- r
  temp[temp > x] <- NA 
  return(temp)
  })

@利沃斯顿很乐意帮忙。如果这解决了你的问题,请考虑接受它作为答案。