Ricardo Bandin
2008-Nov-05 19:19 UTC
[R] Applying a loop with rnorm() to eliminate duplicate coordinates in a dataframe object
Dear colleagues
I found duplicate coordinates trying to convert a dataframe object (see the
attached file) into a geodata one ('geoR' package is needed). My
dataframe
object consists of 2 columns with UTM geographical coordinates and a 3rd
column with fish densities .
To overcome the handicap I must add a tiny value generated by rnorm() to
each geographical coordinate. And it must be in a loop, otherwise the added
value will be the same for all the coordinates, persisting the duplicates.
The example given to me was:
for (i in 1: length(x$coords[1]) { x$coords[1]+rnorm(1,0,1) }
But I still can not understand this instruction syntaxis. I'll be very
grateful if somebody can teach me.
Thanks for your attention,
--
Ricardo Bandin Llanos
rbandin en udec.cl
Estudiante - Mag?ster Cs. m. Pesquer?as
Universidad de Concepci?n, Regi?n del Bio-Bio, Chile
Celular: (0056-41) 97949957
Ben Bolker
2008-Nov-05 21:46 UTC
[R] Applying a loop with rnorm() to eliminate duplicate coordinates in a dataframe object
Ricardo Bandin <rbandin <at> gmail.com> writes:> > Dear colleagues > > I found duplicate coordinates trying to convert a dataframe object (see the > attached file) into a geodata one ('geoR' package is needed). My dataframe > object consists of 2 columns with UTM geographical coordinates and a 3rd > column with fish densities . > > To overcome the handicap I must add a tiny value generated by rnorm() to > each geographical coordinate. And it must be in a loop, otherwise the added > value will be the same for all the coordinates, persisting the duplicates. > The example given to me was: > for (i in 1: length(x$coords[1]) { x$coords[1]+rnorm(1,0,1) } > > But I still can not understand this instruction syntaxis. I'll be very > grateful if somebody can teach me. >I don't quite understand the syntax either -- and your attachment seems to have got(ten) lost in translation. I'm not quite sure about the structure of your data frame, but *if* it had three columns x, y, and z the loop above should be for (i in 1: length(x$x[i]) { x$x[i]+rnorm(1,0,1) } (the absence of the loop variable "i" in the statement between the curly brackets is a clue that something is wrong ...) but you should be able to do this in a vectorized way as x$x <- x$x+rnorm(length(x$x),0,1) I would also suggest that you should adjust the standard deviation of the noise to be small relative to the magnitude of your coordinates ... Ben Bolker