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, [EMAIL PROTECTED] 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 ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html