You have quite a few mistakes in your example. The code below works for me - you can wrap it in a function if you like. I think you will need a lot more practice before you can write something like this in R as you are missing close braces and haven't really worked out the difference between the number of calculations you are doing for each replication and the number of replications. It takes 5-10 minutes to run.
## Put the samples sizes into matrix then use a loop for sample sizes sample_sizes<- matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100), nrow=2) #create vector to combine all std deviations sds<-c(4,6,8,10,12,14) # this number is needed below nsds<-length(sds) set.seed(8) #number of simulations nSims<-10000 #set significance level,alpha for the whole simulatio alpha<-0.05 #set empty vector of length no.of _calculations_ to store p-values # Note: you have 54 calculations, not 10000 ncalcs<-dim(sample_sizes)[2]*nsds t_equal <-c(rep(0,length=ncalcs)) t_unequal <-c(rep(0,length=ncalcs)) mann <-c(rep(0,length=ncalcs)) #set up matrix for storing data from the vectors # but you do want 10000 replications of each calculation matrix_Equal<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) matrix_Unequal<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) matrix_mann<-matrix(rep(NA,ncalcs*nSims),nrow=nSims) ############Simulations for (sim in 1:nSims){ # this loop steps through the sample sizes for(ss in 1:dim(sample_sizes)[2]) { m<-sample_sizes[1,ss] n<-sample_sizes[2,ss] # initialize the index for results i<-1 for (sd in sds) { #first group's standard deviation #generate random samples from 2 normal distribution x_norm1<-rnorm(m,5,sds) y_norm2<-rnorm(n,5,4) #extract p-value out and store it in vectors t_equal[(ss-1)*nsds+i]<-t.test(x_norm1,y_norm2,var.equal=TRUE)$p.value t_unequal[(ss-1)*nsds+i]<-t.test(x_norm1,y_norm2,var.equal=FALSE)$p.value mann[(ss-1)*nsds+i] <-wilcox.test(x_norm1,y_norm2)$p.value i<-i+1 } } #store the current result into matrices by rows matrix_Equal[sim,]<-t_equal matrix_Unequal[sim,]<-t_unequal matrix_mann[sim,]<-mann } ##print results matrix_Equal matrix_Unequal matrix_mann Jim On Wed, Apr 6, 2016 at 12:43 AM, tan sj <sj_style_1...@outlook.com> wrote: > Hi, Jim, i read through your example, > I tried to write a code modified yours example and my ideas ... > In last email, you replied that > "results[[(ss-1)*nssds+ssd_index]]<-<your_test>" ,can i know further about > this ? Because i am not very understand about this . > I am sorry that i am really a new bird in this field... > but the code turn out it have some error ... > Below shown my attempt... > > ## Put the samples sizes into matrix then use a loop for sample sizes > sample_sizes<- > matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100), > nrow=2) > > #create vector to combine all std deviations > sds<-c(4,6,8,10,12,14) > > set.seed(8) > > #number of simulations > nSims<-10000 > #set significance level,alpha for the whole simulatio > alpha<-0.05 > > #set empty vector of length no.of simulation(10000) to store p-value > t_equal <-c(length=nSims) > t_unequal <-c(length=nSims) > mann <-c(length=nSims) > > #set up matrix for storing data from the vectors > matrix_Equal<-matrix(t_equal,nrow=nSims) > matrix_Unequal<-matrix(t_unequal,nrow=nSims) > matrix_mann<-matrix(mann,nrow=nSims) > > ############Simulations > > #BULID A FUNCTION for a collection of statement > f<-function(m,n,sd) > { > for (i in 1:nSims){ > > # this loop steps through the sample sizes > for(ss in 1:dim(sample_sizes)[2]) > { > m<-sample_sizes[1,ss] > n<-sample_sizes[2,ss] > { > for (sd in sds) #first group's standard deviation > { > #generate random samples from 2 normal distribution > x_norm1<-rnorm(m,5,sds) > y_norm2<-rnorm(n,5,4) > > #extract p-value out and store it in vectors > t_equal[i]<-t.test(x_norm1,y_norm2,var.equal=TRUE)$p.value > t_unequal[i]<-t.test(x_norm1,y_norm2,var.equal=FALSE)$p.value > mann[i] <-wilcox.test(x_norm1,y_norm2)$p.value > > ##store the result into matrix defined before > matrix_Equal<-t_equal > matrix_Unequal<-t_unequal > matrix_mann<-mann > > ##print results > matrix_Equal > matrix_Unequal > matrix_mann > > } > } > } > } > } > ________________________________________ > From: Jim Lemon <drjimle...@gmail.com> > Sent: Tuesday, April 5, 2016 2:38 AM > To: tan sj > Cc: r-help@r-project.org > Subject: Re: [R] R-dvel [robustness Simulation study of 2 sample test on > several combination of factors ] > > Hi sst, > You could set up your sample sizes as a matrix if you don't want all > of the combinations: > > sample_sizes<-matrix(c(10,10,10,25,25,25,...),nrow=2) > > and then use one loop for the sample sizes: > > for(ss in 1:dim(sample_sizes)[2]) { > ss1<-sample_sizes[1,ss] > ss2<-sample_sizes[2,ss] > > then step through your SDs: > > for(ssd in c(4,4.4,5,6,8)) { > > Jim > > On Tue, Apr 5, 2016 at 11:15 AM, tan sj <sj_style_1...@outlook.com> wrote: >> hi, i am new in this field. >> >> >> do >> favorite<http://stackoverflow.com/questions/36404707/simulation-study-of-2-sample-test-on-different-combination-of-factors#> >> >> >> If I wish to conduct a simulation on the robustness of two sample test by >> using R language, is that any ways in writing the code? >> There are several factors >> (sample sizes-(10,10),(10,25),(25,25),(25,50),(25,100),50,25),(50,100), >> (100,25),(100,100)) >> >> (standard deviation ratio- (1.00, 1.50, 2.00, 2.50, 3.00 and 3.50)) >> distribution of gamma distribution with unequal skewness and equal skewness >> >> I wish to test the pooled variance t test and welch t test and mann whitney >> by using the above combination of factors. But how can I combine them by >> using for loop or apply function?? >> I am intending to use apply function but i am stucking. If i use for loop >> function, can i use for loop with vectors ? >> for (a in c(25,50,100)) #first group of sample sizes >> { for (b in c(25,50,100)) #second group of sample sizes >> { for (d in c(4,4.4,5,6,8)) #different SDs of first sample >> the above code is an example that I would like to modified but I found I >> have different sets of sample sizes. >> >> So if for loop with vectors, as shown in the code above, will the computer >> run from part (a) 25, to part(b) 25, then to the part (d) 4? then again the >> rotation 50->50->4.4? >> >> ?I hope can hear any news from this website ....please..thanks you. >> >> Regards >> sst >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.