使用`SpatialPolygonsDataFrame`

时间:2015-09-03 15:55:00

标签: r data.table sp maptools

我正在尝试在R中进行一些地理空间分析,这将涉及在绘图期间为SpatialPolygonsDataFrame添加属性以进行着色等。

对于组织,我想通过合并& amp;将这些属性添加到我的SpatialPolygonsDataFrame。更新,但我一直收到“无效.internal.selfref”警告&列将不会添加。

围绕questions and answers here,它似乎与SpatialPolygonsDataFrame对象的数据存储在list中的事实有关,但那里的答案没有帮助处理这个问题,因为他们通常处理的是用户定义的list,而不是那些来自这里的软件包。

这是一个使用愚蠢的shapefile的简单示例,比如U.S. States(你会注意到我使用下面的500k分辨率):

library(maptools)

us.states<-readShapePoly("cb_2014_us_state_5m.shp")

setDT(us.states@data) #works fine
> class(us.states@data)
[1] "data.table" "data.frame"

us.states@data[,test:=1L]
  

警告讯息:在`[.data.table`(us.states@data, , `:=`(test, 1L))中:   通过(浅)检测并修复无效的.internal.selfref   data.table的副本,以便:=可以添加此新列   参考。在较早的时候,data.table已复制R   (或使用structure()或类似手动创建)。避免key<-,   names<-attr<-当前(并且奇怪地)R可能会复制整个内容   data.table。请改用set*语法以避免复制:?set?setnames   和?setattr。此外,在R<=v3.0.2中,list(DT1,DT2)复制了整个DT1   和DT2R的{​​{1}}用于复制命名对象);请升级到   list()如果那是咬人的话。如果此消息没有帮助,请   向datatable-help报告,以便修复根本原因。

这种与我从其他相关答案中收集到的内容,但我至少期望数据更新,但唉:

R>v3.0.2

有什么方法可以继续使用舒适的> names(us.states@data) [1] "STATEFP" "STATENS" "AFFGEOID" "GEOID" "STUSPS" "NAME" "LSAD" "ALAND" "AWATER" 更新参考语法来处理:=(或类似的SpatialPolygonsDataFrame - 检索到的对象)?

目前,我正在使用复制更新,这有效,例如:

.shp

0 个答案:

没有答案