Re: [R] Storing output vector form a loop as a matrix

From: Economics Guy <economics.guy_at_gmail.com>
Date: Sun, 17 Jun 2007 23:26:27 -0400

Thanks so much to both of you. I did not exactly use the code from either of you but your post help me figure out the things I was doing wrong.

For anyone who stumbles upon this thread later, here is the code I used that made it work:

Thanks Again.

a <-c("A","C","B","A","B","C")

b <-c(10,20,30,40,50,60)

d <-data.frame(a,b)

N=10 #Number of Loops

output.matrix <- matrix(0.0,3,N)

#I need to START LOOP HERE

for (i in 1:N){

a <- sample(a, replace=FALSE)

d <-data.frame(b,a)

output.vector <- by(d, a, function(x) sum(x$b))

output.vector <- as.vector(output.vector)

output.vector <- data.frame(output.vector)

output.vector <- as.vector(output.vector) #test

output.matrix[,i] <- t(output.vector)

}

On 6/17/07, jim holtman <jholtman_at_gmail.com> wrote:
>
> 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 -
> canbe confusing
> >
> > 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_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.
> >
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem you are trying to solve?

        [[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. Received on Mon 18 Jun 2007 - 03:38:14 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 18 Jun 2007 - 04:32:20 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.