[R] access to 'formula' terms in a user function

Prof Brian Ripley ripley at stats.ox.ac.uk
Sat Jul 7 08:46:30 CEST 2007


On Fri, 6 Jul 2007, Eric Peterson wrote:

> This is probably buried somewhere in the R help archives, but I've been
> unable to find it, so perhaps the keywords I use here will help bring the
> topic to the surface more easily for future users.
>
> I want to write my own modeling function (ultimately for some
> multidimensional windowing - but this question is on scripting basics).  For
> purposes of figuring out my needs, lets just consider writing a function
> that takes a formula and a dataset, and outputs the mean of each variable in
> the formula model.  So:
>
> MyFunction <- function(AFormula, ADataFrame) {
> ...
> }
>
>> MyFunction(Y ~ A + B, TheData)
>
> would give results something like:
>
> Mean of MyData$Y is 5.3
> Mean of MyData$A is 3.4
> Mean of MyData$B is 8.2
>
> QUESTION 1:
> How do I determine the terms in the formula within the function?

The function you seem to be missing is called terms(), strangely enough.

> QUESTION 2:
> How do I use one of those terms to get to the individual columns, like
> MyData$Y ?

Use model.frame to collect the data you want.  What

 	MyFunction(Y ~ A + B, TheData)

conventionally means is to find Y, A, B, looking first in TheData (not 
MyData), then in the environment of the formula and then in the search 
path (see ?model.frame and 
http://developer.r-project.org/nonstandard-eval.pdf).

See also http://developer.r-project.org/model-fitting-functions.txt.


> Eric Peterson
> Vegetation Ecologist
> Nevada Natural Heritage Program

-- 
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