在R中修改循环以在计算值旁边添加文件名

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

这是上一个问题的延续: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并针对每个由亲朋好友回答的原始问题进行区域统计,现在我有了...

r loops gis lapply
1个回答
0
投票
names(observations)<-files
© www.soinside.com 2019 - 2024. All rights reserved.