首页 > 解决方案 > 当我从 R 中的 ncdf 文件中提取值时发生错误

问题描述

我写了一个函数来从 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')”类的对象

我们如何解决这样的错误?

标签: rextractncdf4

解决方案


我认为 Roman 是正确的,magrittr::extract是 masking 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)
}

推荐阅读