r - R 不喜欢我的坐标 - st_as_sf()
问题描述
尝试通过这篇文章将数据框转换为 sf 对象(如何将数据框转换为空间坐标)。但是我不断收到以下错误..
Error in `[.default`(x, coords) : only 0's may be mixed with negative subscripts
我试图根据这篇文章解决它(R调试:“只有0可能与负下标混合”),因为我的坐标是全局的,所以R不喜欢值的范围。但是,我将其子集到西北半球并收到相同的错误。下面是我正在使用的代码
dat.sf <- st_as_sf(x=dat2,
coords = c(dat2$centroid_lon, dat2$centroid_lat),
crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
其中 dat2 只是与该纬度和经度相关联的风暴事件的坐标和唯一 ID(组 ID)。
更新:我尝试了其他一些事情,例如:
coordinates <- as.data.frame(cbind(dat2$centroid_lon, dat2$centroid_lat))
dat.sf <- st_as_sf(x=dat2,
coords = coordinates,
crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
并收到了这个Error in `[.default`(x, coords) : invalid subscript type 'list'
还有这个....
coordinates <- cbind(dat2$centroid_lon, dat2$centroid_lat)
dat.sf <- st_as_sf(x=dat2,
coords = coordinates,
crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
并收到了这个Error in as.matrix(x)[i] : subscript out of bounds
。traceback() 告诉我这绝对是我的坐标的问题。
解决方案
如果您查看文档,st_as_sf
您会看到coords
参数应该是:
coords:如果是点数据:保存坐标的数字列的名称或编号
因此,您需要传递列的名称,但您传递的是列本身。您还将看到这是coords
在您链接的答案中使用的方式。因此,如果您这样做:
dat.sf <- st_as_sf(x=dat2,
coords = c("centroid_lon", "centroid_lat"),
crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
你应该得到正确的结果。
推荐阅读
- c++ - C++ 为什么以及如何更改旧迭代器的值
- c++ - clang 的 libFuzzer 可以在同一个二进制文件中测试超过 1 个 API 吗?
- javascript - Apps 脚本:时间戳未正确复制
- java - 如何在 ClickListerner 上为网格布局编码
- angular - *ngTemplateOutlet 指令的实际场景是什么?
- javascript - 使用 JavaScript 或 jQuery 切换 CSS 根变量?
- c# - 如何使用 asp.net 从本地文件夹中删除数据列表中的图像 - 错误(system.io.directorynotfoundexception 找不到路径的一部分)
- python - 有没有办法区分功能?
- javascript - Javascript 滚动条 Var 无法正常工作
- python - Python:我有一个值,但无法让它显示回文本字段