On Thu, Jun 09, 2011 at 10:14:48AM -0500, Soyeon Kim wrote: > Dear All, > > This is hard to describe so I made a simple example. > set.seed(1001) > total <- 0 > data <- vector("list", 30) > for(i in 1:30) { > data[[i]] <- runif(50) > } > Let's call a data set runif(50). > While the for loop is running, 100 data sets are generated. > I want to restore 23th data set (the data set generated in 23th for > loop) without the loop. > I've tried set.seed(1023) runif(50) > but this is different data from the data set gotten from 23th for loop. > How can I get 23th data set without the loop?
It is possible to save a bit (not much) over the loop, since a sequence of calls of runif() creates the numbers from the same sequence of numbers. So it is possible to get more numbers in one call not changing the rest of the sequence. I mean the following set.seed(1001) total <- 0 data <- vector("list", 30) for(i in 1:30) { data[[i]] <- runif(50) } set.seed(1001) garbage <- runif(22*50) recomp <- runif(50) identical(data[[23]], recomp) [1] TRUE There are algorithms for jumping ahead in the sequence without generating all intermediate numbers, but i do not know about an efficient available implementation. Petr Savicky. ______________________________________________ R-help@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.