【发布时间】:2013-03-01 19:26:40
【问题描述】:
我在运行 R 版本 2.15.2,平台:i386-w64-mingw32/i386(32 位)的 RStudio (0.97.318) 中的 PBSmapping(版本 2.63.37)中收到零星的错误消息。我在运行以前版本的 R 和 RStudio 时也收到了错误。
> ST6 = importShapefile("Data/pvi_stat_2002_utm.shp", projection="UTM", readDBF = TRUE)
Error in 1:nrow(dbf) : argument of length 0
> traceback()
2: cbind(1:nrow(dbf), dbf)
1: importShapefile("Data/pvi_stat_2002_utm.shp", projection = "UTM",readDBF = TRUE)
我只是偶尔收到此错误 - 可能每 10 次运行代码就有 1 次。但是一旦在会话中发生错误,它就会重复发生并且直到我完全关闭R并重新打开它之后才能成功执行命令。有一次我不得不重新启动计算机才能工作,因为连续重新打开 R 并没有帮助。
我认为这可能是内存问题,但有时当工作区中没有对象时我会收到错误消息。即使我加载了大对象,通常代码也能正常运行。为了响应该错误,我已从工作区中删除了所有对象,甚至还使用了 gc(),但无济于事。
这是我收到错误的唯一 shapefile,但由于它是我唯一经常使用的 shapefile,而且由于我无法预测错误何时发生,因此我对其他 shapefile 的努力尚无定论。不确定将 shapefile 上传到 Stack Overflow。压缩文件大约 9MB。
【问题讨论】:
-
一个经典案例,你应该使用 seq_len(nrow(dbf)) 而不是 1:nrow(dbf)
-
尝试 importShapefile("..shp", projection="UTM", readDBF = FALSE) 可能会避免直接错误并获得几何图形。 rgdal 还读取 shapefile 和 maptools,rgdal 为您提供投影元数据(如果存在),而 maptools 不能(因为它无法从 .prj 中的 WKT 转换为 PROJ.4)。