From b.rowlingson at lancaster.ac.uk  Tue May  4 16:30:06 2010
From: b.rowlingson at lancaster.ac.uk (Barry Rowlingson)
Date: Tue, 4 May 2010 15:30:06 +0100
Subject: [Rd] automatically loading packages
Message-ID: <n2td8ad40b51005040730qb81c404aj4c1b7944bba08f08@mail.gmail.com>

If I start an R session with a previously saved .RData that has S4
objects in it, there are times when the associated package loads when
I use (or mention) the object, and times when it doesn't. For example:

 > dim(casesIn)
 NULL
 > library(sp)
 > dim(casesIn)
 [1] 726  22

 - because casesIn is a SpatialPointsDataFrame. But if I try and plot
it (starting from scratch again), it loads the sp package:

 > plot(casesIn)
 Loading required package: sp

 - and then falls over:

 Error in as.double(y) :
   cannot coerce type 'S4' to vector of type 'double'

 - which is the error you get from plot.default(casesIn).

 Trying plot(casesIn) again then works, producing a point map. Why
doesn't it work the first time?

 dim(casesIn) never triggers a library(sp) call:

 > dim(casesIn)
 NULL

 - so do it manually:

 > library(sp)
 > dim(casesIn)
 [1] 726  22

 - I guess it must depend on whether its a generic of S3 or S4 flavour
and/or the current phase of the moon.

 I can't find any information about this behaviour, and I can't think
of a good query to search for it either. I keep hitting the 'autoload'
documentation, which seems to be something completely different.

R 2.10.1 on Linux - can't see anything relevant in the latest NEWS file.

Barry



[Rd] automatically loading packages
Barry Rowlingson