[Rd] Problem in 'methods' package (PR#4525)

David James
Sat, 11 Oct 2003 22:55:17 -0000

Hello,

It seems to me that Fernando may be right.  The problem seems to be
in R 1.8.0 when defining generics with explicit valueClass.  E.g.,

R-1.7.1:

   > setGeneric("foo", function(x)
standardGeneric("foo"), valueClass="numeric")
   > setMethod("foo", "numeric", function(x) x )
   > foo(pi)
   [1] 3.141593

R-devel (1.9.0):  (I don't have 1.8.0 handy at this moment).

   > setGeneric("foo", function(x)
standardGeneric("foo"), valueClass="numeric")
   > setMethod("foo", "numeric", function(x) x )
   > foo(pi)
   Error in foo(pi) : couldn't find function ".valueClassTest"

whether the problem is in the methods package or the namespace code,
I cannot say.

--
David

Uwe Ligges wrote:
> feferraz@linux.ime.usp.br wrote:
> >
> > Full_Name: Fernando Henrique Ferraz Pereira da Rosa
> > Version: 1.8.0
> > OS: Linux 2.4.21
> > Submission from: (NULL) (200.206.211.169)
> >
> >      After installing R 1.8.0, the R DBI interface stopped working. I
tracked it
> > down as a problem in the 'methods' package, that comes in the
default
> > installation.
> >      Somehow the function '.valueClassTest' which is defined
on package
> > 'methods', is not being defined.
>
> It is. See below.
>
> >      To ilustrate how this breaks DBI, try this in a 1.8.0 R install
(with DBI
> > installed):
> >
> >       > library(DBI)
> >       > con <- dbConnect(dbDriver("MySQL"), dbname =
"test")
> > Error in dbConnect(dbDriver("MySQL"), dbname =
"test") :
> >         couldn't find function ".valueClassTest"
> >
> >       A dirty fix would be defining it by hand (from
> > src/library/methods/R/RMethodUtils.R) :
> >
> >    .valueClassTest <- function(object, classes, fname) {
> >         (...)
> >     }
> >
> >        (Which works), but ideally it'd be nice determning why the
function is
> > not being defined on the first place.
>
> Package "methods" has a namespace from which .valueClassTest() is
not
> exported, but it's in there, try:
>   methods:::.valueClassTest
>
> I think .valueClassTest() is not intended to be called by the user, so
> the bug seems to be in package DBI rather than in R, and the maintainer
> of DBI (David A. James <dj@bell-labs.com>, in CC) will certainly fix
it.
>
> Uwe Ligges

--
David A. James
Statistics Research, Room 2C-253            Phone:  (908) 582-3082
Bell Labs, Lucent Technologies              Fax:    (908) 582-3340
Murray Hill, NJ 09794-0636