[prev in list] [next in list] [prev in thread] [next in thread] 

List:       r-help
Subject:    Re: [R] Automate concatenation?
From:       Martin Maechler <maechler () stat ! math ! ethz ! ch>
Date:       2006-05-31 7:29:46
Message-ID: 17533.17898.577570.911103 () stat ! math ! ethz ! ch
[Download RAW message or body]

>>>>> "Paul" == Paul Roebuck <roebuck@mdanderson.org>
>>>>>     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

 install.packages("fortunes")
 library("fortunes")

 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

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic