[R] specifying dataframe column names in loops

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Jul 4 20:50:32 CEST 2003

Sounds like you need to use substitute(). Something like

eval(substitute(lf <- locfit(~s, data=age), list(s=s)))

Formulae are different: I don't see why density() should be.

On Fri, 4 Jul 2003, Simon Goodman wrote:

> Dear list members,
> This is probably a naive question (from a new user), but I'm having problems
> getting column 
> names to be recognised in loop that is supposed to apply a set of
> calculations in turn
> to each column of a dataframe.
> The dataframe has 33 columns of output from a simulation.
> The columns each have a text name and I want to apply the same set of
> calculations
> to each column in turn. These include some self-defined functions that refer
> back to the 
> column in the current iteration.
> Setting up a 'for' loop and using age[s] (where 'age' is the dataframe and
> 's' is the iterator) to specify
>  each column works for things like 'max' and 'min'. However for functions
> like 'density' or locfit, 
> error messages are generated:
> lf<-locfit(~age[s])
> Error in model.frame(formula, rownames, variables, varnames, extras,
> extranames,  : 
>         invalid variable type


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