On Jun 26, 2011, at 00:10 , David Winsemius wrote: > > On Jun 25, 2011, at 4:33 PM, peter dalgaard wrote: > " >> >> I.e., an unevaluated formulae expression (as in quote(y~x)) is class "call", >> as is an unclassed formula object. So it is pretty easy to have objects of >> class "formula" very similar to objects of class "call". > > Not the first time I have stumbled on such matters. Chamber's SfDA would be > one obvious place to study. Do yu have any others that pop to mind? The > last example suggests that mode and class can each be "call" so that 'call' > is somehow more primitive than "function" or "formula".
Class and mode can also both be "function" or "numeric", but "formula" is not a mode. Historically, in S v3, all objects had a mode, but only some had a class, obtained by explicitly adding a "class" attribute. In S v4, the convention that all objects have a class was introduced, and in many cases an object's mode was promoted to become its class (but matrices became of class "matrix"). You can learn a lot by simple experimentation. E.g., it may be useful to know that call objects are isomorphic to lists and try things like u <- quote(1+3*4) u[[1]] u[[2]] u[[3]] u[[3]][[1]] etc. Beware of "false friends": things that look alike but are different, e.g. the call quote(y~x) and the formula that results from evaluating it. > And by way of directly addressing the OP's questions, it sounds as though > applying unclass() to the formula objects might be attempted? Or evaluating the call, or using as.formula() on it. -- Peter Dalgaard Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd....@cbs.dk Priv: pda...@gmail.com ______________________________________________ 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.