我以为结束了。我想我简化了我的问题,我的数据发生了一些非常奇怪的事情。
我实际上正在使用 SpatialPolygonsDataFrame,并且我正在尝试替换对象(object@data)内部的 data.frame。
所以开头是我从别人那里得到的一个例子:
################ data ################
library(sp)
grd <- GridTopology(c(1,1), c(1,1), c(3,3))
polys <- as.SpatialPolygons.GridTopology(grd)
centroids <- getSpPPolygonsLabptSlots(polys)
x <- centroids[,1]
y <- centroids[,2]
z <- 1.4 + 0.1*x + 0.2*y + 0.002*x*x
map <- SpatialPolygonsDataFrame(polys,
data=data.frame(x=x, y=y, z=z, row.names=getSpPPolygonsIDSlots(polys)))
########## my case ##############
new.data1<-data.frame(x=x, y=y, z=z*2, row.names=getSpPPolygonsIDSlots(polys))
new.data2<-data.frame(x=x, y=y, z=z/2, row.names=getSpPPolygonsIDSlots(polys))
names<-c("new.data1","new.data2")
maps<-c("map1","map2")
for(i in 1:length(names)){
assign(maps[i],map) ### I copy the map in each of the maps I want
### and here I try to copy the new data.frames in the data slot of my maps
assign(maps[i],`@<-`(get(maps[i]),"data",get(names[i])))
}
#### check
identical(get(maps[1]),get(maps[2]))
我以为一切都很好,但相反,我发现不同地图中的两个 data.frame 是相同的。我对我在行中所说的话有点迷失了:
分配(地图[i],@<-
(获取(地图[i]),“数据”,获取(名称[i])))
我认为这应该是问题所在。为什么最后一行将相同的data.frame(姓氏[i])分配给两个新地图(map1和map2)????
非常感谢