r - R raster::extract 无法创建 data.frame
问题描述
我正在寻找使用 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() 的数据帧,这工作正常但效率低下。环顾互联网后,我发现了另一个关于此问题的参考,这是 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,光栅 3.0-7,sf 0.9-0。
解决方案
这是一个错误。现在已经在raster
(3.1-2版)的开发版中修复了
推荐阅读
- javascript - Three.js / jsCAD:如何平滑网格法线以获得轮廓效果?
- java - 如何防止覆盖并添加到现有数组(Java)
- here-api - IOS/Swift:HERE MAPS 不清除地图上的地图标记(探索版)
- windows - 尝试将 Git Bash 设置为终端的默认配置文件时,设置中出现 VSCode 错误
- python - 如何在python中更改.dac文件中的值
- python - 轮播滑动方向的 Kivy RecycleView 不起作用
- reactjs - 有没有办法在 react-admin 的 ReferenceArrayInput -> SelectArrayInput 组件中显示预先选择的项目?
- node.js - 重新加载时反应Nodejs页面空白
- ios - 当环境对象更新导致同一视图重新加载时,如何导航到另一个 SwiftUI 视图
- tkinter - 显示图像 tkinter 的问题