Rscript: 尝试使用raster::extract时为什么会出现“Error in UseMethod("extract_")”错误?

7
我尝试使用raster包中的extract方法从Raster*对象中提取值。
RStudioPrompt> jpnpe <- extract(jpnp, jpnb, fun = mean, na.rm = T)

jpnp是栅格对象,jpnb是SpatialPolygonsDataFrame。

但是出现了以下错误:

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

我该如何解决这个错误?
1个回答

13

问题可能是由于存在另一个具有相同方法名称的包,模糊了栅格提取方法。

tidyr包具有提取方法,可能会与raster的提取方法冲突。

通过检查加载的库来确认:

>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"    

您还可以通过输入函数名称而不带括号来检查正在加载哪个提取方法(如下所示,环境将告诉您正在使用哪个软件包):

> 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>

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

>.rs.unloadPackage("tidyr")

重新执行栅格提取方法:

>jpnpe <- extract(jpnp, jpnb, fun = mean, na.rm = T)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接