Error possibly related with environments/namespace

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Error possibly related with environments/namespace

Frederico Mestre
Hello all,

I've got a problem with a function in a R package I've developed
(MetaLandSim).

One of the outputs of my function is the plotting of four images (combining
a graph and a map). This plotting is made in a graphical device, with the
graph in one side and the map in the other.

My function works perfectly fine until it has to plot the map. Then it
stops and I get an error.

However if I load the exact same function in R it runs perfectly well.

This has something to do with environments, but I can't understand whats
wrong. It is also related with the plotting, since if I set the argument
plot.directions to FALSE I get no error.

Here's the code:

#Loading packages
library(MetaLandSim)
library(rgrass7)

#Loading required data
data(rg_exp)

#Loading required maps
presences <- system.file("examples/presences.asc", package="MetaLandSim")
mask <- system.file("examples/landmask.asc", package="MetaLandSim")

#Start  GRASS using rgrass7
initGRASS("C:/Program Files (x86)/GRASS GIS 7.0.0", home=tempdir())

#Running function
range.map <- range_raster(presences.map=presences, re.out=rg_exp,
mask.map=mask,plot.directions=TRUE)


Cheers,
Frederico Mestre


        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: Error possibly related with environments/namespace

Roger Bivand
Frederico Mestre <mestre.frederico <at> gmail.com> writes:

>
> Hello all,
>
> I've got a problem with a function in a R package I've developed
> (MetaLandSim).
>

The function with the problem is a GRASS script embedded in a portmanteau
function (doing too much at once). This list is not appropriate, and
http://lists.osgeo.org/mailman/listinfo/grass-stats would be much more
appropriate, as this has nothing to do with the development of R internals.

The function should return an S3 object (list of objects) with plot and
summary methods. Then you can see where problems are happening.

>
> However if I load the exact same function in R it runs perfectly well.
>
> This has something to do with environments, but I can't understand whats
> wrong. It is also related with the plotting, since if I set the argument
> plot.directions to FALSE I get no error.
>
> Here's the code:
>
> #Loading packages
> library(MetaLandSim)
> library(rgrass7)
>
> #Loading required data
> data(rg_exp)
>
> #Loading required maps
> presences <- system.file("examples/presences.asc", package="MetaLandSim")
> mask <- system.file("examples/landmask.asc", package="MetaLandSim")
>
> #Start  GRASS using rgrass7
> initGRASS("C:/Program Files (x86)/GRASS GIS 7.0.0", home=tempdir())
>
> #Running function
> range.map <- range_raster(presences.map=presences, re.out=rg_exp,
> mask.map=mask,plot.directions=TRUE)

The example fails because you expect a mask to be set, and remove it - if it
isn't there, the GRASS script fails. Adding:

execGRASS("r.mask", raster="map.mask") gets me further, but isn't the
problem, which is (in this case):

Browse[2]>
debug: image(raster(readRAST("Nprobability")), main = "Northern probability")
Browse[2]>
Creating BIL support files...
Exporting raster as floating values (bytes=8)
 100%
Error in image.default(raster(readRAST("Nprobability")), main = "Northern
probability") :
  'z' must be a matrix

so there is an issue here, which might be addressed by raster::raster
(untried). Main take-home point - write simple functions and leave plota and
summaries to methods used on the output objects - anything else is hard to
debug and maintain.

Hope this clarifies,

Roger


>
> Cheers,
> Frederico Mestre
> ᐧ
>
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Roger Bivand
Department of Economics
NHH Norwegian School of Economics
Helleveien 30
N-5045 Bergen, Norway