終わったと思った。問題を単純化したと思いますが、データに本当に奇妙なことが起こっています。
私は実際に 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]))
すべて問題ないと思っていましたが、別のマップにある 2 つの data.frames が同じであることがわかりました。私は行で何を言っているのか少し迷った:
assign(maps[i], @<-
(get(maps[i]),"data",get(names[i])))
ここが問題だと思います。この最後の行が同じ data.frame (姓[i]) を両方の新しいマップ (map1 と map2) に割り当てるのはなぜですか????
どうもありがとう