feferraz@linux.ime.usp.br
2003-Oct-11 08:20 UTC
[Rd] Problem in 'methods' package (PR#4525)
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.
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.
ligges@statistik.uni-dortmund.de
2003-Oct-11 11:41 UTC
[Rd] Problem in 'methods' package (PR#4525)
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
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