我编写了一个从ncdf文件中提取值的函数,如下所示:
precresults <- function(x){
library(magrittr)
library(ncdf4)
library(raster)
library(ncdf.tools)
##library(ncf)
re1 <- brick(nl1a[x])
re <- extract(re1,zuobiao)
####zuobiao stands for the coordinate of the targeted sites
###extract(zuobiao)
return(re)
}
###precresults(20)
precresults11 <- lapply(1:420, precresults)
“ lapply”功能用于提取多个站点的值。
但是,发生错误:
UseMethod(“ extract_”)中的错误:没有适用的方法 “ extract_”应用于类“ c('RasterBrick','Raster', 'RasterStackBrick','BasicRaster')“
如何解决此类错误?
答案 0 :(得分:1)
我认为Roman是正确的,magrittr::extract
掩盖了raster::extract
。在提供的示例中,您未使用magrittr,但可以在其他地方使用它,因此请使用raster::extract
而不是extract
。您的函数可以改写为:
library(raster)
precresults <- function(x){
re1 <- brick(nl1a[x])
raster::extract(re1, zuobiao)
}
precresults11 <- lapply(1:420, precresults)
或者这样:
library(raster)
x <- matrix(nrow=length(zuobiao), ncol=420)
for (i in 1:420) {
re1 <- brick(nl1a[i])
x[,i] <- raster::extract(re1, zuobiao)
}