首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在执行使用空间点提取时间序列值的函数时出现错误消息。

在执行使用空间点提取时间序列值的函数时出现错误消息。
EN

Stack Overflow用户
提问于 2019-04-30 07:28:11
回答 1查看 67关注 0票数 1

我有一个函数来提取点路径的时间序列光栅的值。到目前为止,这是完美的工作;然而,我不断收到错误,试图使用它今天。我收到的错误是:

UseMethod中的错误(“extract_”):对于“c”(‘RasterLayer’、'Raster‘、’BasicRaster‘)对象,extract_没有适用的方法

你能帮帮我吗。我试了很多次,但无法解决这个问题。

代码语言:javascript
复制
library(raster)
#--------------------------------------start myfunction-----------------------------

# extract raster values for each single point in each path and put it a dataframe
lst <- function (rstack.lst, points, df.name, IDstr){
  df.name <- list()
  ii <- 1
  #number of layers in a list of raster stacks
  n = Reduce(`+`, lapply(rstack.lst, nlayers))

  for (j in 1:length(rstack.lst)){
    df.name[[j]] <- as.data.frame(matrix(0, ncol = nlayers(rstack.lst[[j]])+3, nrow = nrow(points)))
    names(df.name[[j]]) <- append(c("coords.x","coords.y","ID"), substr(names(rstack.lst[[j]]),5,14), after = 3)
    #calculating x and y coordinates
    df.name[[j]][1:2] <- coordinates(points) 
    # setting up unique IDs 
    df.name[[j]]$ID <- paste0(IDstr, ".",seq(1:(nrow(df.name[[j]])))) 

    for (i in 1:nlayers(rstack.lst[[j]])){
      df.name[[j]][i+3] <- extract(rstack.lst[[j]][[i]], points)
      colnames(df.name[[j]][i+3]) <- substr(names(rstack.lst[[j]][[i]]),5,14)
      cat(paste0(round((ii/(n))*100), '% completed'))
      ii <- ii+1
      Sys.sleep(.05)
      if (ii == n) cat(': Done')
      else cat('\014')
    }

  }
  return(df.name)
}
#--------------------------------------end start myfunction-----------------------------

lsdata[[1]] <- lst(rstack.lst=r.lst, points=Pnt.shp, IDstr="P1")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-30 08:01:18

我可能错了,但我认为extract函数没有出现故障,但是您可能正在用完全相同的函数加载其他一些包(我的意思是同名)。有许多包可能具有一个具有同名的函数。例如,extract也是tidyr中的一个函数。为了避免这类问题,我建议您在指定函数的同时也添加包名。在这里你可以做:raster::extract

为了确保,只需执行extract并检查它包含的内容。无论它包含什么内容,可能并不是这样的:

代码语言:javascript
复制
function (x, y, ...) 
standardGeneric("extract")
<bytecode: 0x000000001873c4d0>
<environment: 0x000000001855db68>
Methods may be defined for arguments: x, y
Use  showMethods("extract")  for currently available ones.
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55915878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档