[R-sig-Geo] change a value in the dataframe of a SPDF

Roger Bivand Roger.Bivand at nhh.no
Wed Nov 7 15:49:59 CET 2007


On Wed, 7 Nov 2007, Ingo Holz wrote:

> Hi,
>
> I changed a specific value in the dataframe of a SpatialPolygonsDataFrame
> in the following way:
>
> SPDF[["Name"]][1] <- 1
>
> This needed a very long time (about 10 seconds).

When assigning to an existing object, in general the whole object gets 
recreated. With the North Carolina 100 county data set, both your version 
and the equivalent SPDF$Name[1] <- 1 take the same time, and the time is 
minimal (100 counties, 14 variables). If you can make the data available 
privately, and I imagine that the sizes are >> NC, I can see whether 
profiling provides any answers. With hundreds of thousands of polygons, 
you might see substantial time being used, because the memory model does 
not just "drop" the replacement value into the data.frame in the SPDF data 
slot. Is:

tmp <- SPDF[["Name"]]
tmp[1] <- 1
SPDF[["Name"]] <- tmp

faster, slower? Is assigning to a new column name faster or slower? Note 
that there are two nested access functions here, the [[]] and the [] - as 
you probably noticed, trying to replace [1, "Name"] doesn't work because 
there is no [,] <- replacement method.

Roger

>
> I have two questions:
>   Is there a faster way to do it?
>   Why did it need that much time like I did it?
>
> Thank you,
> Ingo
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no




More information about the R-sig-Geo mailing list