On Tue, Sep 11, 2012 at 4:35 PM, Milan Bouchet-Valat <nalimi...@club.fr> wrote: > 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 >
NextMethod() may also be of some help here, depending on the inheritance you're envisioning. Michael ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel