[Rd] infinite recursion when printing former S4 objects

Seth Falcon sfalcon at fhcrc.org
Fri Apr 20 19:56:15 CEST 2007

Hello all,

An S4 class that contains matrix can be converted into a matrix using
as().  When the resulting object is printed implicitly at the command
line, all is well.  When print() is explicitly called, I see an
infinite recursion.

Here is an example:

## create a subclass of matrix
    > setClass("Foo", representation(name="character"), contains="matrix")
    [1] "Foo"

## test it out
    > f <- new("Foo", name="Sam", matrix())
    > z <- as(f, "matrix")
    > z
    [1,]   NA
    > print(z)
    Error: evaluation nested too deeply: infinite recursion / options(expressions=)?

An easy cut/paste version is below.  I'm seeing this with an R 2.5.0
beta.  I noticed that isS4(z) returns TRUE.  This may or may not be
surprising, but seems quite related to the issue at hand.

+ seth

## ----------------8<--------------8<-----------------------

setClass("Foo", representation(name="character"), contains="matrix")
f <- new("Foo", name="Sam", matrix())
m <- as(f, "matrix")

## ----------------8<--------------8<-----------------------

Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center

More information about the R-devel mailing list