From ggrothendieck at myway.com  Fri Nov 26 04:42:10 2004
From: ggrothendieck at myway.com (Gabor Grothendieck)
Date: Fri Nov 26 04:42:23 2004
Subject: [Rd] Lightweight data frame class
References: <C698D707214E6F4AB39AB7096C3DE5A5751663@phost015.EVAFUNDS.intermedia.net>
Message-ID: <loom.20041126T042044-876@post.gmane.org>

Vadim Ogranovich <vograno <at> evafunds.com> writes:

: 
: Hi,
: 
: As far as I can tell data.frame class adds two features to those of
: lists:
: * matrix structure via [,] and [,]<- operators  (well, I know these are
: actually "["(i, j, ...), not "[,]"). 
: * row names attribute.
: 
: It seems that the overhead of the support for the row names, both
: computational and RAM-wise, is rather non-trivial. I frequently
: subscript from a data.frame, i.e. use [,] on data frames, and my timing
: shows that the equivalent list operation is about 7 times faster, see
: below.
: 
: On the other hand, at least in my usage pattern, I really rarely benefit
: from the row names attribute, so as far as I am concerned row names is
: just an overhead. (Of course the speed difference may be due to other
: factors, the only thing I can tell is that subscripting is very slow in
: data frames relative to in lists).
: 
: I thought of writing a new class, say lightweight.data.frame, that would
: be polymorphic with the existing data.frame class. The class would
: inherit from "list" and implement [,], [,]<- operators. It would also
: implement the "rownames" function that would return seq(nrow(x)), etc.
: It should also implement as.data.frame to avoid the overhead of
: conversion to a full-blown data.frame in calls like lm(y ~ x,
: data=myLightweightDataframe).

The next version of zoo (currently in 
test) supports lists in the data argument of lm
and can also merge zoo series into a list (or
to another zoo series, as it does now).
Would that be a sufficient alternative?


[Rd] Lightweight data frame class
Gabor Grothendieck