I am used to java (well, i dont remember it really well, but anyway) I have having a really difficult time making simple loops to work. I got the following to work: ## ##Creates objects Ux1, Ux2, Ux2 etc. that all contain n numbers in a random distribution ## m<-c(m1,m2,m3,m4,m5,m6,m7,m8,m9,m10)#these are defined as numbers (means) v<-c(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)#these are defined as numbers (variances) n<-50 for(k in 1:g) { assign( paste("Ux", k, sep=""), rnorm( n , assign(paste("m",1,sep=""),m[k]) , assign(paste("m",1,sep=""),v[k]) ) ) } The above seems like a lot of work for such a simple feat, no? Also, I CANNot get the following to work in a loop manor: Ux1i<-as.integer(Ux1) Ux2i<-as.integer(Ux2) Ux3i<-as.integer(Ux3) or Sx1<-sort(Ux1i) Sx2<-sort(Ux2i) Sx3<-sort(Ux3i) Maybe I am just not using matrixes enough? but even that seems quite a lot more complex than calling x<-matrix() then grabbing values by x[j][k]...(java style if i remember correctly). the matrix help in R dosnt make much sense to me. And also i am not sure why numeric() dosnt make you define length before you use it, yet matrix() does. Is there some other funciton that i should be using to make length not an issue? All in all, I dont know if i am going about this loop stuff a reaaaaly round about way - Any help would make me much less loopy:Pthanks -- View this message in context: http://www.nabble.com/Newbie%3A-Simple-loops%3A-complex-troubles-tf3523751.html#a9830574 Sent from the R help mailing list archive at Nabble.com.
Not sure whether this is exactly and everything you want, but at least it may give you some ideas how to proceed. You do not need loops at all: Let's try a simplified example with 3 samples, each of length 10 (just for printing purposes): m <- c(1,2,3) v <- c(1,4,9) n <- 10 means <- rep(m,each=n) vars <- rep(v,each=n) means [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 vars [1] 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 9 9 9 9 9 9 9 9 9 9 numbers <- matrix(rnorm(length(means), mean=means, sd=sqrt(vars)), nrow=n, byrow=F) numbers [,1] [,2] [,3] [1,] 0.9721407 0.4510903 -2.880967 [2,] -0.4834124 -2.7958993 -1.368037 [3,] 1.6871736 -0.6717009 -3.268698 [4,] 0.9738312 3.1919293 3.982135 [5,] 0.8032162 1.0397078 7.227974 [6,] -0.1606657 2.6339503 5.873210 [7,] 0.5786295 -0.3589869 4.194425 [8,] 0.9909184 2.0622899 6.432129 [9,] 3.1687842 1.9765014 3.788201 [10,] 1.4814704 3.3024049 4.194628 colnames(numbers) <- paste('Ux',1:length(m),sep='') numbers Ux1 Ux2 Ux3 [1,] 0.9721407 0.4510903 -2.880967 [2,] -0.4834124 -2.7958993 -1.368037 [3,] 1.6871736 -0.6717009 -3.268698 [4,] 0.9738312 3.1919293 3.982135 [5,] 0.8032162 1.0397078 7.227974 [6,] -0.1606657 2.6339503 5.873210 [7,] 0.5786295 -0.3589869 4.194425 [8,] 0.9909184 2.0622899 6.432129 [9,] 3.1687842 1.9765014 3.788201 [10,] 1.4814704 3.3024049 4.194628 Now your random vectors are in columns of 'numbers' and you can work with them using indexing. Petr projection83 napsal(a):> I am used to java (well, i dont remember it really well, but anyway) > > I have having a really difficult time making simple loops to work. I got the > following to work: > > ## > ##Creates objects Ux1, Ux2, Ux2 etc. that all contain n numbers in a > random distribution > ## > m<-c(m1,m2,m3,m4,m5,m6,m7,m8,m9,m10)#these are defined as numbers (means) > v<-c(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)#these are defined as numbers > (variances) > n<-50 > for(k in 1:g) > { > assign( paste("Ux", k, sep=""), rnorm( n , > assign(paste("m",1,sep=""),m[k]) , assign(paste("m",1,sep=""),v[k]) ) > ) > } > > > The above seems like a lot of work for such a simple feat, no? > > Also, I CANNot get the following to work in a loop manor: > > Ux1i<-as.integer(Ux1) > Ux2i<-as.integer(Ux2) > Ux3i<-as.integer(Ux3) > > or > > Sx1<-sort(Ux1i) > Sx2<-sort(Ux2i) > Sx3<-sort(Ux3i) > > Maybe I am just not using matrixes enough? but even that seems quite a lot > more complex than calling x<-matrix() then grabbing values by > x[j][k]...(java style if i remember correctly). the matrix help in R dosnt > make much sense to me. And also i am not sure why numeric() dosnt make you > define length before you use it, yet matrix() does. Is there some other > funciton that i should be using to make length not an issue? > > > All in all, I dont know if i am going about this loop stuff a reaaaaly round > about way - Any help would make me much less loopy:Pthanks > > >-- Petr Klasterecky Dept. of Probability and Statistics Charles University in Prague Czech Republic
One of the things about R that you have to learn is vector operations. You try to avoid loops and also 'generating' variables -- this is where a list comes in very handy. To relate to Java, it is similar to 'struct'. Here is a program that does what you want to do; it uses lists and vectorized operations. # generate some test data m <- seq(5, 30, length=10) # means v <- m / 4 # variance n <- 50 # samples # use list for the data ans <- lapply(seq_along(m), function(x) rnorm(n, m[x], v[x])) # convert to integer ansInt <- lapply(ans, as.integer) # sort ansSort <- lapply(ansInt, sort) # show the results ansSort On 4/3/07, projection83 <mkurowski@gmail.com> wrote:> > > I am used to java (well, i dont remember it really well, but anyway) > > I have having a really difficult time making simple loops to work. I got > the > following to work: > > ## > ##Creates objects Ux1, Ux2, Ux2 etc. that all contain n numbers in > a > random distribution > ## > m<-c(m1,m2,m3,m4,m5,m6,m7,m8,m9,m10)#these are defined as numbers > (means) > v<-c(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)#these are defined as numbers > (variances) > n<-50 > for(k in 1:g) > { > assign( paste("Ux", k, sep=""), rnorm( n , > assign(paste("m",1,sep=""),m[k]) , assign(paste("m",1,sep=""),v[k]) ) > ) > } > > > The above seems like a lot of work for such a simple feat, no? > > Also, I CANNot get the following to work in a loop manor: > > Ux1i<-as.integer(Ux1) > Ux2i<-as.integer(Ux2) > Ux3i<-as.integer(Ux3) > > or > > Sx1<-sort(Ux1i) > Sx2<-sort(Ux2i) > Sx3<-sort(Ux3i) > > Maybe I am just not using matrixes enough? but even that seems quite a lot > more complex than calling x<-matrix() then grabbing values by > x[j][k]...(java style if i remember correctly). the matrix help in R dosnt > make much sense to me. And also i am not sure why numeric() dosnt make you > define length before you use it, yet matrix() does. Is there some other > funciton that i should be using to make length not an issue? > > > All in all, I dont know if i am going about this loop stuff a reaaaaly > round > about way - Any help would make me much less loopy:Pthanks > > > > -- > View this message in context: > http://www.nabble.com/Newbie%3A-Simple-loops%3A-complex-troubles-tf3523751.html#a9830574 > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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]]