0

私は次のようなことをしようとしています:

get(names[i])$column1<-vector

より正確には、私の場合、get(names[i])@data<-data.frame

get()私は似たようなものを探して苦労してきましたassign()...しかし、それを行う方法がわかりません

例:

names<-c("york","paris","donostia")
vector<- 1:8
data<- as.data.frame(matrix(rep(0,9),ncol=3))

どうすればこれを行うことができますか?

4

3 に答える 3

0

終わったと思った。問題を単純化したと思いますが、データに本当に奇妙なことが起こっています。

私は実際に 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) に割り当てるのはなぜですか????

どうもありがとう

于 2013-07-11T14:18:38.973 に答える