我试图在列表中的一些栅格上循环重采样函数,以便它们的尺寸、范围和分辨率与列表中的第一个栅格相匹配。但我不断收到以下错误
<块引用>(函数(类,fdef,mtable)中的错误: 无法为签名“list”、“RasterLayer”找到函数“resample”的继承方法
下面是我的代码:
library(raster)
rastlist <- list.files(path = ".", pattern='.tif$',
all.files=T, full.names=F)
allrasters <- lapply(rastlist, raster)
nrasters <- length(allrasters)
raster_standard <- allrasters[[1]]
r<-allrasters[i]
for (i in 1:nrasters) {
rs<-resample(r,raster_standard, method='bilinear')
}
我发现了一些类似的主题,但我认为我不会犯同样的错误,所以我不确定这些解决方案是否会对我有所帮助。您能提供的任何帮助将不胜感激。
答案 0 :(得分:1)
你犯了以下错误
allrasters[i]
allrasters[[i]]
--- 使用单括号将生成您报告的错误消息,就像您尝试将 resample
与 { {1}} 而不是 list
RasterLayer
,因此您最好只执行最后一次迭代。相反,将栅格添加到列表中下面的作品
rs
为了更快地重采样,您可以尝试library(raster)
#ff <- list.files(pattern='\\.tif$')
# to make this reproducible
f <- system.file("external/test.grd", package="raster")
ff <- rep(f, 3)
rr <- lapply(ff, raster)
standard <- rr[[1]]
rs <- list(standard)
for (i in 2:length(rr)) {
rs[[i]] <- resample(rr[[i]], standard, method='bilinear')
}
s <- stack(rs)
terra