Re: [Rd] R crashes when printing a named numeric vector of a specific class - Bug?

From: Basil Abou El-Komboz <Basil.Abou-El-Komboz_at_stat.uni-muenchen.de>
Date: Tue, 11 Sep 2012 22:04:13 +0200

    >> Le mardi 11 septembre 2012 à 16:53 +0200, Basil Abou El-Komboz a
    >> écrit :

>>> Dear useR's,
>>>
>>> today I stumbled over an interesting phenomenon: First, I
>>> created a named numeric vector with a certain class and several
>>> attributes via the structure() function. After that, I
>>> implemented a simple print method for this class. When calling
>>> this function it produces an endless loop of print calls until R
>>> crashes. :/
>>>
>>> What is going on here? Is this a bug or have I done something
>>> completely wrong? :)
>>>
>>> Below is a minimal example which reproduces the behavior. Be
>>> careful when calling foo() as this automatically calls
>>> print.bar() which causes R to crash (at least on my PC, see
>>> further informations about my system below.)
>>>
>>> Greetings, Basil
>>>
>>> --------------------------------------------------
>>>
>>> Minimal example:
>>>
>>> foo <- function () { x <- c("A" = 1.3, "B" = 0.7, "C" = -0.3)
>>> structure(x, class = "bar") }
>>>
>>> print.bar <- function (x, ...) { print(x, ...) }
    >> What is your code supposed to do exactly? ;-)
    >> 
    >> You're calling print() in your class' print.bar() function, so
    >> calling print() on such an object will call print.bar(), which
    >> calls print(), which calls print.bar()... In a few moments the
    >> recursion will have gone so deep that some system limit about the
    >> stack size must be reached, and R is killed.
    >> 
    >> If you just want to print the object as a vector, you do not need
    >> to define any function. Or, at least, call print.default()
    >> instead of the generic print().
    >> 
    >> 
    >> My two cents
    >> 

    R> NextMethod() may also be of some help here, depending on the     R> inheritance you're envisioning.

    R> Michael

Oops, I was blind. Thanks for the answers and pointing me in the right direction. Of course, this is not a problem of R but a problem of my coding. ;)

Greetings,
Basil



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 12 Sep 2012 - 07:10:10 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 12 Sep 2012 - 22:30:42 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive