[R] poly objects as data frame columns

David Winsemius dwinsemius at comcast.net
Fri Jul 17 19:36:22 CEST 2009


Dataframes are lists. Look at dat with str and you will see that the  
third column (actually the third list element) is a matrix. It's not  
hard to find the documentation. If you read the documentation on the  
help page for data.frame you should see this:

"If a list or data frame or matrix is passed to data.frame it is as if  
each component or column had been passed as a separate argument  
(except for matrices of class"model.matrix" and those protected by I)."

It seems reasonable that poly() returns an object that is considered a  
model.matrix.

On Jul 17, 2009, at 12:54 PM, Ulrike Grömping wrote:

>
> Dear UseRs,
>
> I just learnt that the number of columns of a data frame is not  
> always what
> I thought it to be, and I wonder where I should have learnt about  
> this.
> Consider the following example:
>
> dat <- data.frame(X1=1:10, X2=LETTERS[1:10])
> ncol(dat)          ## evaluates to 2 (of course)
> dat$X1poly <- poly(dat$X1,3)
> dat                  ## five columns displayed
> ncol(dat)          ## evaluates to 3
> colnames(dat)   ## three names (third is X1poly)
> colnames(dat)[3] <- "newname"
> dat                 ## all three previous X1poly columns renamed
>
> This appears intentional, as it treats the column names reasonably.  
> Where is
> it documented ? Are there any other scenarios for which the number of
> columns displayed when printing a data frame does not coincide with  
> ncol ?
>
> Regards, Ulrike

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list