Vadim,

On May 8, 2005, at 2:09 PM, Vadim Ogranovich wrote:

# the naive "[.lwdf" = function (x, i, j) lapply(x[j], function (col) col[i])

Umm... what about his:

"[.lwdf" = function(x, i, j) { r<-lapply(lapply(j,function(a) x [[a]]),function(x) x[i]); names(r)<-names(x)[j]; r }

The subsetting operates on vectors, so it's not a problem. Don't ask me about the speed, though ;). And btw: you could access "[

What I meant with my cautious remarks are the following issues. You were talking about building a df alternative (s/df/data.frame/g in this e-mail). The first issue is that by re-defining "[" and friends you make your new calls incompatible with the behavior of lists, so you won't be able to use it where lists are required (even though is.list says TRUE). This may break code were you'd like your class to act as a list. On the other hand, your class is not a df either - and I suspect that it's far from trivial to make it even closely compatible with a df in terms of its behavior. Moreover any function that checks for df won't treat your class as such, because it simply is no df (is.data.frame()=FALSE for starters). So in the end, you would have to modify every function in R that uses df to recognize your new class. On the other hand if you make your class a subclass of df (there we get into some trouble with S3), you could replace the back-end, but then you will have to support every df feature including row.names. You could try it, but I'm somewhat skeptical... but your mileage may vary ...

Cheers,
Simon

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to