Rscript:为什么在尝试使用raster :: extract时会指出UseMethod(“ extract_”)中的错误?

KK.*_*KK. 4 rscript rstudio r-raster

我试图使用栅格数据包的extract方法从Raster *对象提取值。

RStudioPrompt> jpnpe <- extract(jpnp, jpnb, fun = mean, na.rm = T)
Run Code Online (Sandbox Code Playgroud)

其中jpnp是栅格对象,而jpnb是SpatialPolygonsDataFrame

但是,指示以下错误:

Error in UseMethod("extract_") : 
  no applicable method for 'extract_' applied to an object of class "c('RasterStack', 'Raster', 'RasterStackBrick', 'BasicRaster')"
Run Code Online (Sandbox Code Playgroud)

如何传递此错误?

KK.*_*KK. 5

问题可能是由于拥有另一个具有相同方法名称的程序包而使栅格提取方法变得混乱。

tidyr包的提取方法可能与栅格的提取方法冲突。

通过检查执行以下操作加载的库来确认:

>search()




[1] ".GlobalEnv"           **"package:tidyr"**        "package:dplyr"       
 [4] "package:rgeos"        "package:ggplot2"      "package:RColorBrewer"
 [7] "package:animation"    "package:rgdal"        "package:maptools"    
[10] **"package:raster"**       "package:sp"           "tools:rstudio"       
[13] "package:stats"        "package:graphics"     "package:grDevices"   
[16] "package:utils"        "package:datasets"     "package:methods"     
[19] "Autoloads"            "package:base"    
Run Code Online (Sandbox Code Playgroud)

您还可以通过键入不带方括号的函数名称来检查正在加载哪个解压缩方法(如下所示,环境将告诉您正在使用哪个包):

> extract

function (data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, 
    convert = FALSE, ...) 
{
    col <- col_name(substitute(col))
    extract_(data, col, into, regex = regex, remove = remove, 
        convert = convert, ...)
}
<environment: namespace:tidyr>
Run Code Online (Sandbox Code Playgroud)

要解决该错误, 只需卸载有问题的软件包,在RStudio中,您可以使用以下命令:

>.rs.unloadPackage("tidyr")
Run Code Online (Sandbox Code Playgroud)

并重新执行栅格提取方法:

>jpnpe <- extract(jpnp, jpnb, fun = mean, na.rm = T)
Run Code Online (Sandbox Code Playgroud)