On 06/02/2012 4:12 PM, Hadley Wickham wrote:
>  2. It's more flexible to construct the language object as a language object,
>  rather than pasting something together and parsing it.  For one thing, that
>  allows non-syntactic variable names; I think it's also easier to read.  So
>  your code
>
>  txt<- paste("tabular(value*v*", LEFT , "~" ,RIGHT ,", data = m_xx,
>  suppressLabels  = 2,...)", sep = "")
>  eval(parse(text = txt ))
>
>  could be rewritten as
>
>  formula<- substitute( value*v*LEFT ~ RIGHT, list(LEFT=LEFT, RIGHT=RIGHT))
>  tabular(formula, data = m_xx, suppressLabels = 2, ...)

To be strictly correct, shouldn't that be:

formula<- eval(substitute( value*v*LEFT ~ RIGHT, list(LEFT=LEFT, RIGHT=RIGHT)))

?

>  It might make sense to put something like this into the tables package, but
>  I don't want to have a dependency on reshape.

Would you consider making tabular generic?

I have now made tabular() into a generic function, but because of the problems at R-forge, can't commit the changes immediately. The old tabular() function is now the tabular.formula() method; the default method tries to coerce the object to a formula to call that. I think both my suggestion and yours would likely have problems in the new system (as they did in the old one) because the environment associated with the formula would be wrong. It's a little tricky, but now tabular() works a lot more like model.frame(), which I think has to be considered to be the standard way to do this.

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to