[R] expression with running index
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sun Apr 25 20:40:44 CEST 2004
lapply(-1:2, function(i) substitute(expression(b[i]), list(i=i)))
would be a good start. (Note that what it gives is
[[1]]
expression(b[as.integer(-1)])
which is not what you asked for but is what I think you intended.
Then we can elaborate this to
f <- function(ind, vec)
lapply(ind,
function(i, vec) substitute(expression(vec[i]),
list(i=i, vec=vec)),
vec=as.name(vec))
f(-1:2, "b") and f(c("f", "g", "h"), "b") both work
Also, I am not sure you need the expression() in there, as without it you
have a language call which will almost certainly do.
On Sun, 25 Apr 2004, Tamas Papp wrote:
> Hi,
>
> I need a list of expression of the form expression(b[i]), where i is a
> running index. So for example, if i <- -1:2, I would like to have a
> list equivalent to
>
> list(expression(b[-1]), expression(b[0]), expression(b[1]), expression(b[2]))
>
> "i" might be a character vector (like c("f", "g", "h"))
>
> Could somebody help me out by writing a function that produces the
> list above for a given string in place of "b" and a vector of subscripts?
>
> Sorry if this has been discussed before, I tried searching the
> archives but "expression" as a keyword gives too many results on
> different subjects.
--
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