这是上一个问题的延续:Creating R loop to read in shapefiles from a directory and perform zonal statistics on each
您好人回答的原始问题,现在我有另一个。
因此,我在“县”目录中有120个县shapefile。我正在使用R读取每个shapefile,并针对每个shapefile使用单个栅格图层“ RGB_band1_NOAA”执行区域统计(均值)。
这里是执行循环的代码:
library(rgdal) library(raster) library(sf) library(maptools) input_path <- "C:/path/to/Counties" files <- list.files(input_path, pattern="[.]shp$", full.names=TRUE) allShapes <- lapply(files, readOGR) observations = vector() for (i in 1:length(allShapes)){ observations[i] <- extract(RGB_band1_NOAA, allShapes[[i]], fun=mean, na.rm=TRUE) } > observations [1] 0.0420572431 0.0000000000 0.0000000000 0.0000000000 0.0067861584 0.0004686914 0.0700653942 0.0000000000 0.0000000000 0.0542978996 0.0000000000 [12] 0.0000000000 0.0071916012 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0323350977 [23] 0.0015185602 0.0000000000 0.0000000000 0.1012598426 0.0000000000 0.0000000000 0.0069525885....
这会将所有结果放入列表。有没有一种方法可以编辑执行区域统计的循环,这样,对于每个计算值,R也会在其旁边添加shapefile名称?在文件夹中,每个shapefile是县名(例如-Adair.shp,Boyd.shp)。这样,我可以确保在以后进行操作时(计划将值转换为数值旁边带有县名的数据框),每个计算出的值都匹配与其关联的县?
这是上一个问题的延续:创建R循环以从目录中读取shapefile并针对每个由亲朋好友回答的原始问题进行区域统计,现在我有了...
names(observations)<-files