On Tue, 7 Feb 2017, marta azores wrote:
Hello everyone,
I would like to change the ID of SpatialLinesDataFrame (SLDF), by the
value
of one variable (in my case splndf$Idkey).
I read the answer of Roger Bivand in this link:
https://stat.ethz.ch/pipermail/r-sig-geo/2015-December/023809.html
This works well when I write an specific number. However, I can't change
the id of my SLDF by my Idkey value.
At first the value in the SLDF was an integer and I converted to a numeric
value. I don't understand why works with a number and not when I define
the
number from the SLDF.
Any idea?
The values contained in row.names() of data.frame objects and similar are
always seen as being of type character. Consequently, if you try to assign
a vector of type numeric, it will fail.
Never, ever use @ - these are exclusively for programming internally. Use
splndf$Idkey, which is its accessor method. Either use
as.character(splndf$Idkey), or possibly formatC(splndf$Idkey, format="d",
flag="0", width=<>) for left-padding of zeros to your choice of width if
the column is integer but should be like "0010", and integer 10 is stored.
Roger
Thanks in advance,
Marta
#######################################################################
##script
########change the ID's SLDF
#Please use row.names(), so here:
row.names(L1) <- c("c", "d")
#If L1 was a SpatialLinesDataFrame, the row.names of the data slot would
also
#be updated.
###################################################
row.names(splndf)
#[1] "1"
#1) First, I try manually to change the id (works)
row.names(splndf) <- ("2905")
str(splndf)#@ ID : chr "2905"
str(2905)
#num 2905
is.numeric(2905)
2905
#2) Second, I try extract the Idkey value and convert into the SLDF's ID.
k<-splndf at data$Idkey
str(k)
#int 2905
k <- as.numeric(k)
k
#[1] 2905
str(k)
# num 2905
is.numeric(k)
#TRUE
k
row.names(splndf) <- (k)
#Error in (function (classes, fdef, mtable) :
#unable to find an inherited method for function ?spChFIDs? for signature
?"SpatialLinesDataFrame", "numeric"?
[[alternative HTML version deleted]]