[My previous message rejected, therefore I am sending same one with some modification]
I have 3 vectors with object name : dat1, dat2, dat3
Now I want to create a loop, like :
for (i in 1:3)
{
cat(sd(dati))
}
How I can do this in R?
Regards,
Loop on vector name
5 messages · Megh Dal, Henrique Dallazuanna, Dimitris Rizopoulos +1 more
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20080917/9d511d2b/attachment.pl>
you need to get(), e.g., try this:
dat1 <- rnorm(5)
dat2 <- rnorm(6)
dat3 <- rnorm(7)
lis <- lapply(paste("dat", 1:3, sep = ""), get)
lis
sapply(lis, sd)
I hope it helps.
Best,
Dimitris
Megh Dal wrote:
[My previous message rejected, therefore I am sending same one with some modification]
I have 3 vectors with object name : dat1, dat2, dat3
Now I want to create a loop, like :
for (i in 1:3)
{
cat(sd(dati))
}
How I can do this in R?
Regards,
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Dimitris Rizopoulos Assistant Professor Department of Biostatistics Erasmus Medical Center Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands Tel: +31/(0)10/7043478 Fax: +31/(0)10/7043014
Others have answered the question that you asked (it is also a variation of Faq 7.21), but here is an answer to the question that you should have asked: When working with datasets like this, it is better to create a list rather than separate objects with names like dat1, dat2, etc. For example:
mydat <- list(dat1=rnorm(10), dat2=rnorm(25), dat3=runif(100))
Now your loop can be:
for(i in 1:3) cat( sd( mydat[[i]] ) )
Or even simpler:
sapply( mydat, sd )
And when you are through with the data, you only need to delete one object, or copy one object, or save one object, etc. Hope this helps,
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
project.org] On Behalf Of Megh Dal
Sent: Wednesday, September 17, 2008 5:51 AM
To: r-help at stat.math.ethz.ch
Subject: [R] Loop on vector name
[My previous message rejected, therefore I am sending same one with
some modification]
I have 3 vectors with object name : dat1, dat2, dat3
Now I want to create a loop, like :
for (i in 1:3)
{
cat(sd(dati))
}
How I can do this in R?
Regards,
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting- guide.html and provide commented, minimal, self-contained, reproducible code.
1 day later
Thanks for this mail. It runs perfectly, but now I stuck on how to convert the result in a vector format for further matrix-compputation. e.g. How to convert "sapply(lis, sd)" to vector?
--- On Wed, 9/17/08, Dimitris Rizopoulos <d.rizopoulos at erasmusmc.nl> wrote:
From: Dimitris Rizopoulos <d.rizopoulos at erasmusmc.nl>
Subject: Re: [R] Loop on vector name
To: megh700004 at yahoo.com
Cc: r-help at stat.math.ethz.ch
Date: Wednesday, September 17, 2008, 5:32 PM
you need to get(), e.g., try this:
dat1 <- rnorm(5)
dat2 <- rnorm(6)
dat3 <- rnorm(7)
lis <- lapply(paste("dat", 1:3, sep =
""), get)
lis
sapply(lis, sd)
I hope it helps.
Best,
Dimitris
Megh Dal wrote:
[My previous message rejected, therefore I am sending
same one with some modification]
I have 3 vectors with object name : dat1, dat2, dat3
Now I want to create a loop, like :
for (i in 1:3)
{
cat(sd(dati))
}
How I can do this in R?
Regards,
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. -- Dimitris Rizopoulos Assistant Professor Department of Biostatistics Erasmus Medical Center Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands Tel: +31/(0)10/7043478 Fax: +31/(0)10/7043014