[R-sig-Geo] inconsistent as.data.frame(SpatialPointsDF)
Robert J. Hijmans
r.hijmans at gmail.com
Fri Mar 20 20:39:59 CET 2015
The raster package 'enhances' as.data.frame for SpatialLines* and
SpatialPolygons*. I am not sure why there is also a function for
SpatialPoints* as it does not add anything, except for setting the
names to 'x' and 'y'. Perhaps that is what I did it for, I cannot
remember. But clearly it is not desirable to get different results
depending on when raster is loaded or not, so I have removed it. Sorry
for causing trouble.
Robert
On Fri, Mar 20, 2015 at 11:39 AM, Frede Aakmann Tøgersen
<frtog at vestas.com> wrote:
> Hi
>
> I can reproduce this using Edzer's example. See below for output from R. Also notice the naming of the coordinate columns to "x" and "y" in the S4 method of the raster package's function as.data.frame! Isn't that quite unusual? I have maintainer on CC.
>
>> library(sp)
>> df = data.frame(Longitude=1:2, Latitude=2:1, z = 3:4)
>> df1 = df
>> coordinates(df1) = ~Longitude + Latitude
>> as.data.frame(df1)
> Longitude Latitude z
> 1 1 2 3
> 2 2 1 4
>> library(raster)
>> search()
> [1] ".GlobalEnv" "package:raster" "package:sp"
> [4] "ESSR" "package:stats" "package:graphics"
> [7] "package:grDevices" "package:utils" "package:datasets"
> [10] "package:methods" "Autoloads" "package:base"
>> as.data.frame(df1)
> x y z
> 1 1 2 3
> 2 2 1 4
>> showMethods("as.data.frame")
> Function: as.data.frame (package base)
> x="ANY"
> x="data.frame"
> (inherited from: x="ANY")
> x="Raster"
> x="SpatialLines"
> x="SpatialPoints"
> x="SpatialPointsDataFrame"
> (inherited from: x="SpatialPoints")
> x="SpatialPolygons"
>
>> selectMethod("as.data.frame", "SpatialPointsDataFrame")
> Method Definition:
>
> function (x, row.names = NULL, optional = FALSE, ...)
> {
> .local <- function (x, row.names = NULL, optional = FALSE,
> xy = TRUE, ...)
> {
> if (!xy) {
> if (.hasSlot(x, "data")) {
> return(x at data)
> }
> else {
> return(NULL)
> }
> }
> nobj <- length(x)
> d <- coordinates(x)
> if (.hasSlot(x, "data")) {
> d <- cbind(d, x at data)
> }
> colnames(d)[1:2] <- c("x", "y")
> rownames(d) <- NULL
> as.data.frame(d, row.names = row.names, optional = optional,
> ...)
> }
> .local(x, row.names, optional, ...)
> }
> <bytecode: 0x000000000d037260>
> <environment: namespace:raster>
>
> Signatures:
> x
> target "SpatialPointsDataFrame"
> defined "SpatialPoints"
>>
>
>
>
> Yours sincerely / Med venlig hilsen
>
>
> Frede Aakmann Tøgersen
> Specialist, M.Sc., Ph.D.
> Plant Performance & Modeling
>
> Technology & Service Solutions
> T +45 9730 5135
> M +45 2547 6050
> frtog at vestas.com
> http://www.vestas.com
>
> Company reg. name: Vestas Wind Systems A/S
> This e-mail is subject to our e-mail disclaimer statement.
> Please refer to www.vestas.com/legal/notice
> If you have received this e-mail in error please contact the sender.
>
>> -----Original Message-----
>> From: R-sig-Geo [mailto:r-sig-geo-bounces at r-project.org] On Behalf Of
>> dschneiderch
>> Sent: 20. marts 2015 18:19
>> To: r-sig-geo at r-project.org
>> Subject: Re: [R-sig-Geo] inconsistent as.data.frame(SpatialPointsDF)
>>
>> I just went through my packages, iteratively unloading each one with:
>> detach('package:raster')
>> and found that if I unload the raster package then the expected behavior of
>> keeping the existing coordnames is achieved.
>>
>> now why that differs in my script I have no idea.
>>
>> > coordnames(snotellocs)
>> [1] "Longitude" "Latitude"
>> > detach('package:raster')
>> > head(as.data.frame(snotellocs))
>> network State Station_ID Site_ID Site_Name Latitude Longitude
>> 1 SNTL AZ 11R06S 308 BAKER BUTTE 34.45660 -111.4064
>> 2 SNTL AZ 11R07S 1140 BAKER BUTTE SMT 34.45547 -111.3827
>> 3 SNTL AZ 09S01S 310 BALDY 33.97883 -109.5034
>> 4 SNTL AZ 09S06S 902 BEAVER HEAD 33.69144 -109.2166
>> 5 SNTL AZ 09N05S 1143 BEAVER SPRING 36.32678 -109.0571
>> 6 SNTL AZ 12P01S 1139 CHALENDER 35.26247 -112.0623
>> Elevation_ft Elevation_m
>> 1 7300 2225
>> 2 7700 2347
>> 3 9125 2781
>> 4 7990 2435
>> 5 9200 2804
>> 6 7100 2164
>> >
>>
>> Dominik Schneider
>> o 303.735.6296 | c 518.956.3978
>>
>>
>> On Fri, Mar 20, 2015 at 11:02 AM, dschneiderch [via R-sig-geo] <
>> ml-node+s2731867n7587929h1 at n2.nabble.com> wrote:
>>
>> > Edzer - Look like we posted at the same time.
>> > In my example my coordinates are named, no?
>> >
>> > I tried your example in my R environment and can replicate the behavior I
>> > mentioned.
>> >
>> > > df = data.frame(x=1:2, y=2:1, z = 3:4)
>> > > df1 = df
>> > > library(sp)
>> > > coordinates(df1) = ~x+y
>> > > as.data.frame(df1)
>> > x y z
>> > 1 1 2 3
>> > 2 2 1 4
>> > > coordnames(df1)
>> > [1] "x" "y"
>> > > coordnames(df1)=c('long','lat')
>> > > str(df1)
>> > Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
>> > ..@ data :'data.frame': 2 obs. of 1 variable:
>> > .. ..$ z: int [1:2] 3 4
>> > ..@ coords.nrs : int [1:2] 1 2
>> > ..@ coords : num [1:2, 1:2] 1 2 2 1
>> > .. ..- attr(*, "dimnames")=List of 2
>> > .. .. ..$ : NULL
>> > .. .. ..$ : chr [1:2] "long" "lat"
>> > ..@ bbox : num [1:2, 1:2] 1 1 2 2
>> > .. ..- attr(*, "dimnames")=List of 2
>> > .. .. ..$ : chr [1:2] "long" "lat"
>> > .. .. ..$ : chr [1:2] "min" "max"
>> > ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
>> > .. .. ..@ projargs: chr NA
>> > > as.data.frame(df1)
>> > x y z
>> > 1 1 2 3
>> > 2 2 1 4
>> >
>> >
>> > Interestingly, when I open a new R instance and without loading all the
>> > packages associated with my project, the names are *not* converted. So it
>> > seems that one of the packages I have loaded is conflicting with sp and
>> > causing the names to change... my sessionInfo() was attached in the other
>> > post.
>> >
>> >
>> > ------------------------------
>> > If you reply to this email, your message will be added to the discussion
>> > below:
>> >
>> > http://r-sig-geo.2731867.n2.nabble.com/inconsistent-as-data-frame-
>> SpatialPointsDF-tp7587920p7587929.html
>> > To unsubscribe from inconsistent as.data.frame(SpatialPointsDF), click
>> > here
>> > <http://r-sig-
>> geo.2731867.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_
>> by_code&node=7587920&code=RG9taW5pay5TY2huZWlkZXJAY29sb3JhZG8u
>> ZWR1fDc1ODc5MjB8LTEwMzMyMTA1OQ==>
>> > .
>> > NAML
>> > <http://r-sig-
>> geo.2731867.n2.nabble.com/template/NamlServlet.jtp?macro=macro_view
>> er&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespac
>> es.BasicNamespace-nabble.view.web.template.NabbleNamespace-
>> nabble.naml.namespaces.BasicNamespace-
>> nabble.view.web.template.NabbleNamespace-
>> nabble.naml.namespaces.BasicNamespace-
>> nabble.view.web.template.NabbleNamespace-
>> nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscrib
>> ers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-
>> send_instant_email%21nabble%3Aemail.naml>
>> >
>>
>>
>>
>>
>> --
>> View this message in context: http://r-sig-
>> geo.2731867.n2.nabble.com/inconsistent-as-data-frame-SpatialPointsDF-
>> tp7587920p7587931.html
>> Sent from the R-sig-geo mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
More information about the R-sig-Geo
mailing list