[R] converting lists got by tapply to dataframes
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Mar 10 19:27:38 CET 2004
On Wed, 10 Mar 2004, Liaw, Andy wrote:
> That gives you a vector, not a data frame.
>
> The problem is that the object returned by tapply is a 1-d array of list.
> When as.data.frame() is called, the default method doesn't know how to
> handle arrays and gives the error. What you really want for this particular
> case is to treat the object as a list, so the unorthodox way is:
>
> as.data.frame.list(xb)
>
> OK, I didn't really say that...
If this dataset barley from package lattice, it works in 1.9.0 alpha
which does have as.data.frame.array. So the issue is about to go away.
> > On Wednesday 10 March 2004 06:58, Wolfram Fischer wrote:
> > > I have two lists:
> > >
> > > xa <- list( X=c(1,2,3), Y=c(4,5,6), Z=c(7,8,9) )
> > >
> > > xb <- with( barley, tapply( X=seq(1:nrow(barley)), INDEX=site
> > > , FUN=function(z)yield[z]))
> > >
> > > I can convert xa to a dataframe easily with:
> > > as.data.frame(xa)
> > >
> > > But if i try the same with xb I get:
> > > as.data.frame(xb)
> > > Error in as.data.frame.default(xb) :
> > > can't coerce array into a data.frame
> > >
> > > What helps?
> > >
> > > (NB: I know the formula for xb is stupid, but it generates the same
> > > type of list as the list I get from my real problem.)
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list