[R-sig-Geo] Plotting depends on search() order?

Roger Bivand Roger.Bivand at nhh.no
Tue Apr 7 09:36:52 CEST 2009


On Mon, 6 Apr 2009, Don MacQueen wrote:

> I am finding that plotting a SpatialPolygonsDataFrame object
> fails when the base graphics packages are ahead of
> sp in the search() path. This occurs when I put
>    require(maptools)     [ or require(rgdal), or require(sp) ]
> in my .Rprofile file.

I never use an .Rprofile file for loading packages, because I forget that 
it/they is/are there. Mine sets up an alternative terminal handling of 
help pages, running R code from the base package. Could you try manually 
ordering the search path by requiring() the base packages 
graphics:datasets before maptools in your .Rprofile? Reading ?.Rprofile 
does suggest that one needs to tread carefully here.

Roger

>
> In the examples below, the object 'srdf' was created exactly as in the 
> example in help('overlay').
>
> An entire transcript of both cases is included at the end, but here are the 
> key excerpts:
>
> -- Case 1 (problem):
>>  search()
> [1] ".GlobalEnv"        "package:graphics"  "package:grDevices"
> [4] "package:utils"     "package:datasets"  "package:maptools"
> [7] "package:sp"        "package:foreign"   "package:stats"
> [10] "package:methods"   "Autoloads"         "package:base"
>>
>>  plot(srdf)
> Error in as.double(y) :
>  cannot coerce type 'S4' to vector of type 'double'
>
> -- Case 2 (ok):
>>  search()
> [1] ".GlobalEnv"        "package:maptools"  "package:sp"
> [4] "package:foreign"   "package:stats"     "package:graphics"
> [7] "package:grDevices" "package:utils"     "package:datasets"
> [10] "package:methods"   "Autoloads"         "package:base"
>>
>>  plot(srdf)
>> 
>
> Do I understand correctly that the reason is that there is 'plot' function in 
> the base graphics package, and another in the sp package, and the latter is 
> required for plotting spatial objects, so it has to come first in the search 
> order? Or have I missed something?
>
> This is easy enough to deal with, but it would be convenient to be able to 
> put those "requires" in .Rprofile.
>
> Thanks
> -Don
>
> -------------------------------------------------------------
>
> maptools.load.order[119]% cat .Rprofile
> require(maptools)
> maptools.load.order[120]%
> maptools.load.order[120]% R
>
> R version 2.8.1 (2008-12-22)
> Copyright (C) 2008 The R Foundation for Statistical Computing
> ISBN 3-900051-07-0
>
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
>
>  Natural language support but running in an English locale
>
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R or R packages in publications.
>
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
>
> Loading required package: maptools
> Loading required package: foreign
> Loading required package: stats
> Loading required package: sp
> [Previously saved workspace restored]
>
>>  class(srdf)
> [1] "SpatialPolygonsDataFrame"
> attr(,"package")
> [1] "sp"
>>
>>  search()
> [1] ".GlobalEnv"        "package:graphics"  "package:grDevices"
> [4] "package:utils"     "package:datasets"  "package:maptools"
> [7] "package:sp"        "package:foreign"   "package:stats"
> [10] "package:methods"   "Autoloads"         "package:base"
>>
>>  plot(srdf)
> Error in as.double(y) :
>  cannot coerce type 'S4' to vector of type 'double'
>>  q()
> Save workspace image? [y/n/c]: y
> maptools.load.order[121]%
>
>
> --------------------------------------------------------------
>
> maptools.load.order[123]% cat .Rprofile
> ## require(maptools)
> maptools.load.order[124]%
> maptools.load.order[124]% R
>
> R version 2.8.1 (2008-12-22)
> Copyright (C) 2008 The R Foundation for Statistical Computing
> ISBN 3-900051-07-0
>
> R is free software and comes with ABSOLUTELY NO WARRANTY.
> You are welcome to redistribute it under certain conditions.
> Type 'license()' or 'licence()' for distribution details.
>
>  Natural language support but running in an English locale
>
> R is a collaborative project with many contributors.
> Type 'contributors()' for more information and
> 'citation()' on how to cite R or R packages in publications.
>
> Type 'demo()' for some demos, 'help()' for on-line help, or
> 'help.start()' for an HTML browser interface to help.
> Type 'q()' to quit R.
>
> [Previously saved workspace restored]
>
>>  require(maptools)
> Loading required package: maptools
> Loading required package: foreign
> Loading required package: sp
>>
>>  class(srdf)
> [1] "SpatialPolygonsDataFrame"
> attr(,"package")
> [1] "sp"
>>
>>  search()
> [1] ".GlobalEnv"        "package:maptools"  "package:sp"
> [4] "package:foreign"   "package:stats"     "package:graphics"
> [7] "package:grDevices" "package:utils"     "package:datasets"
> [10] "package:methods"   "Autoloads"         "package:base"
>>
>>  plot(srdf)
>>
>>  sessionInfo()
> R version 2.8.1 (2008-12-22)
> i386-apple-darwin8.11.1
>
> locale:
> C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages:
> [1] maptools_0.7-21 sp_0.9-34       foreign_0.8-34
>
> loaded via a namespace (and not attached):
> [1] grid_2.8.1      lattice_0.17-20
> Warning message:
> 'DESCRIPTION' file has 'Encoding' field and re-encoding is not possible
>>
>>  q()
> Save workspace image? [y/n/c]: y
> maptools.load.order[125]%
>
>

-- 
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