R RASTER::EXTRACT无法创建数据。帧 [英] R raster::extract fails to create data.frame

查看:11
本文介绍了R RASTER::EXTRACT无法创建数据。帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望使用RASTER::EXTRACT和SF对象从栅格中提取值。然而,我遇到了一些困难。我希望创建一个数据框,其中包含单元格号(以派生XY值)、提取的单元格值和ID字段(如果我从多行提取)。我通过以下几点做到了这一点:

  dtm_values <- raster::extract(raster, transect_sf, cellnumbers = TRUE, df = TRUE)

但是,我无法提取到数据框,因为我收到以下错误:

Error in do.call(rbind, sapply(1:length(res), function(x) if (!is.null(res[[x]])) cbind(x,  : 
  second argument must be a list
作为一种变通办法,我将提取为一个列表(即df=False),并使用as.data.Frame()将其转换为DataFrame,这工作得很好,但效率较低。在互联网上搜索了一下,我发现了另一个关于这个问题的参考,那就是2018年的一份错误报告: https://r-forge.r-project.org/tracker/index.php?func=detail&aid=6570&group_id=294&atid=1189

这似乎是我面临的问题。此链接还包括以下可复制的示例,我可以复制它们:

r = raster(nrow=45, ncol=90) 
r[] = 1:ncell(r) 

transect_sf = st_sfc(st_linestring(rbind(c(-175, -85), c(175, 85)))) %>%
    st_sf() 
raster::extract(r, transect_sf, along = TRUE, df = TRUE) 
 #> Error in do.call(rbind, sapply(1:length(res), function(x) if (!is.null(res[[x]])) cbind(x, : second argument must be a list

是我搞错了,还是栅格包有问题?

提前感谢您的帮助。

我使用的是:Windows 7上的R-3.6.1,RASTER 3.0-7,SF 0.9-0。

推荐答案

这是一个错误。现在已在raster(版本3.1-2)的开发版本中进行了修复

这篇关于R RASTER::EXTRACT无法创建数据。帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆