Re: [R] Automate concatenation?

2006-05-31 Thread Martin Maechler
> "Paul" == Paul Roebuck <[EMAIL PROTECTED]>
> 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


Re: [R] Automate concatenation?

2006-05-30 Thread Rolf Turner

Well, I like do.call():

puddy.tat <- do.call("c",lapply(paste("a",1:10,sep=""),get))

cheers,

Rolf Turner
[EMAIL PROTECTED]

__
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


Re: [R] Automate concatenation?

2006-05-30 Thread Paul Roebuck
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="")

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


--
SIGSIG -- signature too long (core dumped)

__
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


Re: [R] Automate concatenation?

2006-05-30 Thread Peter Dalgaard
Robert Lundqvist <[EMAIL PROTECTED]> writes:

> 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. 

And less error-prone (where did the "7" go?)...

> 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="")

I think this should work:

unlist(lapply( paste("a",1:10,sep=""), get))

(and of course, the usual sermon applies: You're likely better off
using a list of vectors rather than vectors with similar names.)

-- 
   O__   Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark  Ph:  (+45) 35327918
~~ - ([EMAIL PROTECTED])  FAX: (+45) 35327907

__
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


Re: [R] Automate concatenation?

2006-05-30 Thread Dimitris Rizopoulos
you need get(), look also at FAQ 7.21

a1 <- 1:3
a2 <- 4:5
a3 <- 6:10
a4 <- 11:20
a5 <- 21:25
#
lapply(paste("a", 1:5, sep = ""), get)

I hope it helps.

Best,
Dimitris


Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
 http://www.student.kuleuven.be/~m0390867/dimitris.htm


- Original Message - 
From: "Robert Lundqvist" <[EMAIL PROTECTED]>
To: 
Sent: Tuesday, May 30, 2006 2:07 PM
Subject: [R] Automate concatenation?


>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="")
>
> Robert
>
> __
> 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
> 


Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm

__
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