Based on help files and searching the archives and help from the listserv I
have managed to build my monte carlo program.
However I cannot get the proper syntax for running the loop and storing the
output of each loop (which is a vector) into a matrix.
I took out some of the crazy code I was writing, but here is what I have:
--------------------
rm(list = ls(all = TRUE))
# removes everything
a
<-c("A","C","B","A","B","C")
b <-c(10,20,30,40,50,60)
c <-data.frame(a,b)
N=10 #Number of Loops
output.matrix <- matrix(0.0,3,N)
#I need to START LOOP HERE
a <- sample(a, replace=TRUE)
c <-data.frame(b,a)
output.vector <- by(c, a, function(x) sum(x$b))
output.vector <- as.vector(output)
output.vector <- data.frame(output)
#END LOOP here
--------------------------
What I would like to have at the end is the "output.matrix" contain as
a
column the "output.vector" from each iteration. The actual data
frame I
will be running has 60,000 observations and I am going to run 20000
iterations so speed is important too.
Thanks so much
EG
[[alternative HTML version deleted]]
I'm not sure I've completely understood this, but would this do what you
want:
for (i in 1:N){
aa <- sample(a, replace=TRUE)
c <-data.frame(b,aa)
output <- by(c, aa, function(x) sum(x$b))
output.matrix[,i] <- as.vector(output)
}
On 17/06/07, Economics Guy <economics.guy at gmail.com>
wrote:> Based on help files and searching the archives and help from the listserv I
> have managed to build my monte carlo program.
>
> However I cannot get the proper syntax for running the loop and storing the
> output of each loop (which is a vector) into a matrix.
>
> I took out some of the crazy code I was writing, but here is what I have:
>
> --------------------
>
> rm(list = ls(all = TRUE))
> # removes everything
>
> a
<-c("A","C","B","A","B","C")
>
> b <-c(10,20,30,40,50,60)
>
> c <-data.frame(a,b)
>
> N=10 #Number of Loops
>
> output.matrix <- matrix(0.0,3,N)
>
> #I need to START LOOP HERE
>
> a <- sample(a, replace=TRUE)
>
> c <-data.frame(b,a)
>
> output.vector <- by(c, a, function(x) sum(x$b))
>
> output.vector <- as.vector(output)
>
> output.vector <- data.frame(output)
>
> #END LOOP here
>
>
> --------------------------
>
> What I would like to have at the end is the "output.matrix"
contain as a
> column the "output.vector" from each iteration. The actual data
frame I
> will be running has 60,000 observations and I am going to run 20000
> iterations so speed is important too.
>
> Thanks so much
>
> EG
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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
> and provide commented, minimal, self-contained, reproducible code.
>
--
================================David Barron
Said Business School
University of Oxford
Park End Street
Oxford OX1 1HP
I think this does it for you:> a <-c("A","C","B","A","B","C") > > b <-c(10,20,30,40,50,60) > > C <-data.frame(a,b) # don't use 'c' as it is a primitive function - canbeconfusing> > N=10 #Number of Loops > > > > output.matix <- replicate(N, function(x){+ .samp <- C[sample(nrow(C), replace=TRUE), ] + tapply(.samp$b, .samp$a, sum) + })> # transpose if you want samples in columns > output.matrix <- t(output.matrix) > output.matrix[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] A 10 130 100 40 50 40 30 50 50 50 B 130 60 50 110 100 160 110 130 60 150 C 40 NA 60 80 120 60 NA 60 80 20>On 6/17/07, Economics Guy <economics.guy@gmail.com> wrote:> > Based on help files and searching the archives and help from the listserv > I > have managed to build my monte carlo program. > > However I cannot get the proper syntax for running the loop and storing > the > output of each loop (which is a vector) into a matrix. > > I took out some of the crazy code I was writing, but here is what I have: > > -------------------- > > rm(list = ls(all = TRUE)) > # removes everything > > a <-c("A","C","B","A","B","C") > > b <-c(10,20,30,40,50,60) > > c <-data.frame(a,b) > > N=10 #Number of Loops > > output.matrix <- matrix(0.0,3,N) > > #I need to START LOOP HERE > > a <- sample(a, replace=TRUE) > > c <-data.frame(b,a) > > output.vector <- by(c, a, function(x) sum(x$b)) > > output.vector <- as.vector(output) > > output.vector <- data.frame(output) > > #END LOOP here > > > -------------------------- > > What I would like to have at the end is the "output.matrix" contain as a > column the "output.vector" from each iteration. The actual data frame I > will be running has 60,000 observations and I am going to run 20000 > iterations so speed is important too. > > Thanks so much > > EG > > [[alternative HTML version deleted]] > > ______________________________________________ > 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 > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve? [[alternative HTML version deleted]]