Clark Allan wrote:
hi
thanx for the help. i dont want to use matrices. i solve my problem, see the example below.
the set.seed is used because in my actual application i need to generate
INDEPENDENT variables. will this ensure that the variables are
independent?
Why do you want to set.seed() inside the loop?
Just set it once at the beginning of your simulation in order to get reproducible results - you can assume independence anyway.
Or maybe I am missing the point why you are going to set.seed() inside the loop.
Uwe Ligges
z3<-function(w) { for (i in 1:w) { ss<-0 for (j in 1:5) { set.seed(j+1+(i-1)*6) r<-rnorm(1) ss<-ss+r a<-list(ss=ss,r=r) } print(paste("############ i=",i,"############")) print(a) } } z3(3)
z3(3)
[1] "############ i= 1 ############" $ss [1] -2.213343
$r [1] 0.269606
[1] "############ i= 2 ############" $ss [1] -2.904235
$r [1] -1.480568
[1] "############ i= 3 ############" $ss [1] -0.01516304
$r [1] 0.9264592
thanx again
*** allan
############################################################################################### ############################################################################################### ############################################################################################### ############################################################################################### ############################################################################################### ###############################################################################################
Adaikalavan Ramasamy wrote:
You will need to capture the value of ss at the end of each 'i' as such
z4 <-function(w){
output <- numeric(w)
for (i in 1:w){
set.seed(i+6) # this is redundant line ss<-0
for (j in 1:5){ set.seed(j+1+(i-1)*6) r<-rnorm(1) ss<-ss+r }
output[i] <- ss } return(output) }
BTW, I do not think it is a good idea to set.seed() so many times.
To answer you more general question, see if the following is useful. I am trying to simulate 'n' values from a standard normal distribution but 'n' is random variable itself.
f <-function(w, lambda=3){
tmp <- list(NULL)
for (i in 1:w){ n <- 1 + rpois(1, lambda=lambda) # number of simulation required tmp[[ i ]] <- rnorm(n) }
# flatten the list into a ragged matrix out.lengths <- sapply(tmp, length) out <- matrix( nr=w, nc=max( out.lengths ) ) rownames(out) <- paste("w =", 1:w) for(i in 1:w) out[i, 1:out.lengths[i] ] <- tmp[[i]]
return(out) }
f(6, lambda=3)
It is not very elegant but I hope that helps you out somehow.
Regards, Adai
On Thu, 2005-03-10 at 10:16 +0200, Clark Allan wrote:
hi all
another simple question.
i've written a dummy program so that you get the concept. (the code could be simplfied such that there are no loops. but lets leave the loops in for now.)
z1<-function(w) { for (i in 1:w) { set.seed(i+6) ss<-0 for (j in 1:5) { set.seed(j+1+(i-1)*6) r<-rnorm(1) ss<-ss+r } list(ss=ss) } } check.1<-z1(3) check.1
the results is: $ss [1] -0.01516304
what i want is something that looks like this:
j=1 $ss [1] -2.213343
j=2 $ss [1] -2.904235
j=3 $ss [1] -0.01516304
i know that i could use the print command. (see z2)
z2<-function(w) { for (i in 1:w) { set.seed(i+6) ss<-0 for (j in 1:5) { set.seed(j+1+(i-1)*6) r<-rnorm(1) ss<-ss+r } print(ss) } } check.2<-z2(3) check.2
check.2<-z2(3)
[1] -2.213343 [1] -2.904235 [1] -0.01516304
check.2
[1] -0.01516304
the problem with z2 is that only the last value is saved.
what i could do is use matrices like the following: (but i dont want to do this AND WOULD PREFER TO USE list.)
z3<-function(w) { results.<-matrix(nrow=w,ncol=1) colnames(results.)<-c("ss") for (i in 1:w) { set.seed(i+6) ss<-0 for (j in 1:5) { set.seed(j+1+(i-1)*6) r<-rnorm(1) ss<-ss+r } results.[i,1]<-ss } results. } check.3<-z3(3) check.3
check.3
ss [1,] -2.21334260 [2,] -2.90423463 [3,] -0.01516304
what if i have a new program (something different) and i want the following:
j=1 $a 1 2 3
$b 1 2 3 4 5
$c 1
############### j=2 $a 11 21 31
$b 11 21 31 41 51
$c 11
############### j=3 $a 21 22 32
$b 21 22 32 42 52
$c 21
MATRICES SEEMS TO BE A GOOD WAY OF DOING THIS (but then you would have to set up three matrices, one for a,b and c). BUT WHAT IF I WANT TO USE THE LIST FUNCTION? i.e. there is a list in the first loop that i want to display!
sorry for the long mail.
*** ALLAN ______________________________________________ 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
------------------------------------------------------------------------
______________________________________________ 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
______________________________________________ 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