Re: [R] Automate concatenation?

From: Martin Maechler <>
Date: Wed 31 May 2006 - 17:29:46 EST

>>>>> "Paul" == Paul Roebuck <> >>>>> on Tue, 30 May 2006 16:04:14 -0500 (CDT) writes:

    Paul> On Tue, 30 May 2006, Robert Lundqvist wrote:
>> I have this typical problem of joining a number of vectors with similar
>> names - a1, a2,..., a10 - which should be concatenated into one. Using
>> c(a1,a2,a3,a4,a5,a6,a,a8,a9,a10) naturally works, but I would like to do
>> it with less manual input. My attempts to use paste() gives a vector of
>> the vector names, see below. The question is how to do the the
>> concatenation? Any suggestions?
>> paste("a",1:10,sep="")

    Paul> a1 <- c(5, 4)
    Paul> a2 <- 2
    Paul> a3 <- 6:9
    Paul> cmd <- sprintf("c(%s)",
    Paul>                paste("a", 1:3, sep = "", collapse = ", "))
    Paul> eval(parse(text = cmd))

Executive Summary: "Try not to use eval(parse(text = * )) "

Excuse me, Paul,
but the other replies to this message had better answers. If you do


 fortune("answer is parse")

You get a very notable advise (by Thomas Lumley) on why a solution using parse() very often ``stinks''.

In the present example and quite a few other ones, the much better solution is to use get() [as the other replies in this thread do].

In a recent private e-mail, Brian Ripley has reminded me of the generic way to avoid eval(parse(text = * )) , namely via eval(substitute(f(A,B), list(A=.., B=..))

Martin Maechler, ETH Zurich mailing list PLEASE do read the posting guide! Received on Wed May 31 19:08:23 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 31 May 2006 - 22:10:25 EST.

Mailing list information is available at Please read the posting guide before posting to the list.