From tlumley at u.washington.edu  Tue Mar 29 03:34:57 2005
From: tlumley at u.washington.edu (Thomas Lumley)
Date: Tue Mar 29 03:35:17 2005
Subject: [Rd] strange error with rw2010dev
In-Reply-To: <4248AC1A.3020104@acelerate.com>
References: <4248AC1A.3020104@acelerate.com>
Message-ID: <Pine.A41.4.61b.0503281731450.345630@homer03.u.washington.edu>

On Mon, 28 Mar 2005, Kjetil Brinchmann Halvorsen wrote:

>> testmat <- matrix(1:80, 20,4)
>> dim(testmat)
> [1] 20  4
>> str(testmat)
> int [1:20, 1:4] 1 2 3 4 5 6 7 8 9 10 ...
>> testframe <- data.frame(testmat=I(testmat),
>   x=rnorm(20), y=rnorm(20), z=sample(1:20))
>> str(testframe)
> `data.frame':   20 obs. of  4 variables:
> $ testmat: int [1:20, 1:4] 1 2 3 4 5 6 7 8 9 10 ...
> ..- attr(*, "class")= chr "AsIs"
> $ x      : num   0.768 -0.462  0.450  0.476 -1.077 ...
> $ y      : num   0.453  1.227 -1.514 -0.904 -0.129 ...
> $ z      : int  10 4 15 19 14 3 9 17 18 5 ...
>> summary(testframe)
> Error: protect(): protection stack overflow
>

Yes, you're getting infinite recursion.

summary.data.frame calls summary.matrix to handle the first column, and 
this then calls summary.data.frame on data.frame(testframe[[1]]), but
> str(data.frame(testframe[[1]]))
`data.frame':   20 obs. of  1 variable:
  $ testframe..1..: int [1:20, 1:4] 1 2 3 4 5 6 7 8 9 10 ...
   ..- attr(*, "class")= chr "AsIs"

so round and round we go. Perhaps summary.matrix should do something to 
remove the AsIs attribute?

 	-thomas


[Rd] strange error with rw2010dev
Thomas Lumley