Goodness Patrick, this must surely qualify for the obfuscated R competition finals. I love it!
There are two solutions I can think of with do.call and here they are: > x <- 1 > x2 <- runif(10) > x12 <- c("x", "x2") > do.call("cbind", lapply(x12, as.name)) x x2 [1,] 1 0.99327265 [2,] 1 0.63260097 [3,] 1 0.17411170 [4,] 1 0.54635634 [5,] 1 0.75603670 [6,] 1 0.27739270 [7,] 1 0.32125068 [8,] 1 0.01326344 [9,] 1 0.37519602 [10,] 1 0.11133052 > do.call("cbind", lapply(x12, get)) [,1] [,2] [1,] 1 0.99327265 [2,] 1 0.63260097 [3,] 1 0.17411170 [4,] 1 0.54635634 [5,] 1 0.75603670 [6,] 1 0.27739270 [7,] 1 0.32125068 [8,] 1 0.01326344 [9,] 1 0.37519602 [10,] 1 0.11133052 > I suspect the first offers a few advantages over the second, (which some other people have implicitly suggested). The first preserves the names in the result. Also, if the vectors are large, the second constructs a large language object and then evaluates it to get a large result. The first uses the names rather than the objects themselves, so at least the language object is small, even if the result is not. A more serious, philosophical word on Patrick's solution. It is rarely necessary (in my limited experience, sure) to have to use parse() like this. Where it provides a quick (kludgy?) solution I often find it a useful exercise to consider alternatives. They often come out simpler and you nearly always pick up something useful in the process. Bill V. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Patrick Burns Sent: Thursday, 25 March 2004 7:02 AM To: Stephane DRAY Cc: [EMAIL PROTECTED]; Stephane DRAY; Tom Blackwell Subject: Re: [R] binding vectors or matrix using their names I think you are looking for the eval-parse-text idiom: eval(parse(text=paste("cbind(", paste(my.names, collapse=", "), ")"))) Patrick Burns Burns Statistics [EMAIL PROTECTED] +44 (0)20 8525 0696 http://www.burns-stat.com (home of S Poetry and "A Guide for the Unwilling S User") Stephane DRAY wrote: > Hi Tom, > > Your approach did not work, > > > do.call("cbind", as.list(my.names)) > [,1] [,2] > [1,] "x" "x2" > > but it helps me a lot to find the good one: > > do.call("cbind", as.list(parse(text=my.names))) > > Thanks, > > > At 14:56 24/03/2004, Tom Blackwell wrote: > >> I believe the syntax is >> >> result <- do.call(cbind, as.list(my.names)) >> >> Haven't checked this on your example, though. >> >> - tom blackwell - u michigan medical school - ann arbor - >> >> On Wed, 24 Mar 2004, Stephane DRAY wrote: >> >> > Hello list, >> > I have two vectors x and x2: >> > >> > x=runif(10) >> > x2=runif(10) >> > >> > and one vectors with their names : >> > >> > my.names=c("x","x2") >> > >> > I would like to cbind these two vectors using their names contained >> in the >> > vector my.names. >> > I can create a string with comma >> > ncomma=paste(my.names,collapse=",") >> > >> > and now, I just need a function to transform this string into a >> adequate >> > argument for cbind: >> > >> > cbind(afunction(ncomma)) >> > >> > Is there in R a function that can do the job ? If not, how can I do >> it ?? >> > >> > Thanks in advance, >> > Sincerely. >> > >> > >> > Stéphane DRAY >> > >> --------------------------------------------------------------------- >> ----------------------------- >> >> > >> > Département des Sciences Biologiques >> > Université de Montréal, C.P. 6128, succursale centre-ville >> > Montréal, Québec H3C 3J7, Canada >> > >> > Tel : 514 343 6111 poste 1233 >> > E-mail : [EMAIL PROTECTED] >> > >> --------------------------------------------------------------------- >> ----------------------------- >> >> > >> > Web >> http://www.steph280.freesurf.fr/ >> > >> > ______________________________________________ >> > [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 >> > >> >> ______________________________________________ >> [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 > > > Stéphane DRAY > ---------------------------------------------------------------------- > ---------------------------- > > Département des Sciences Biologiques > Université de Montréal, C.P. 6128, succursale centre-ville Montréal, > Québec H3C 3J7, Canada > > Tel : 514 343 6111 poste 1233 > E-mail : [EMAIL PROTECTED] > ---------------------------------------------------------------------- > ---------------------------- > > Web > http://www.steph280.freesurf.fr/ > > ______________________________________________ > [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 > > ______________________________________________ [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 ______________________________________________ [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