本文介绍了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无法创建数据。帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!