Hi see inline
> -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > project.org] On Behalf Of staysafe23 > Sent: Friday, February 01, 2013 1:01 AM > To: r-help@r-project.org > Subject: [R] Nested loop and output help > > Hello Everyone, > > My name is Thomas and I have been using R for one week. I recently > found your site and have been able to search the archives of posts. > This has given me some great information that has allowed me to craft > an initial design to an inquiry I would like to make into the breakdown > of McNemar's test. I have read an intro to R manual and the posting > guides and hope I am not violating them with this post. If so I will > re-ask my question in the proper format. > > I have succeeded in writing a loop to vary one condition of my inquiry > but I am unable to understand how to vary the remaining three > conditions, each with its own for loop. Each time I try to do so I fail > miserably. Here is my current code : > > n <- seq(5,10,by=1) > > for(i in n) { > > z1 <- rnorm(n,mean=400, sd=70) > > z2 <- rnorm(n,mean=450, sd=90) > > cor <- runif(1,min=0.4, max=0.6) > > X <- z1 > > Y = cor*z1+(1-cor)*z2 > > mat1 <- cbind(X,Y) > > dev1 <- sample(-40:40, 1, replace=T) > > cut1 <- mean(X) + dev1 > > dev2 <- sample(12:54, 1, replace=T) > > cut2 <- mean(X) + dev1 + dev2 > > X2 <- X-cut1 > > Y2 <- Y-cut2 > > c3 <- cor(X2,Y2) > > mat2 <-cbind(X2,Y2) > > a11 <- ifelse( X < cut1 & Y < cut2, 1, 0) > > a12 <- ifelse( X < cut1 & Y >= cut2, 1, 0) > > a21 <- ifelse( X >= cut1 & Y < cut2, 1, 0) > > a22 <- ifelse( X >= cut1 & Y >= cut2, 1, 0) > > mat3 <-matrix(c(sum(a11),sum(a21), sum(a12),sum(a22)), nrow = 2) > > mat4 <-matrix(c(sum(a11),sum(a22), sum(a12),sum(a21)), nrow = 2) > > out3a <- mcnemar.test(mat3, correct=FALSE) > > out3b <- mcnemar.test(mat3, correct=TRUE) > > out4a <- chisq.test(mat4, correct = FALSE) > > out4b <- chisq.test(mat4, correct = TRUE) > > print(mat1) > > print(mat2) > > print(cut1) > > print(cut2) > > print(mat3) > > print(out3a) > > print(out3b) > > print(mat4) > > print(out4a) > > print(out4b) > > } > > . Use list structure for keeping such results. lll<-list() for(j in 1:5) { lll[[j]] <- list() for( i in 1:3) lll[[j]][[i]]<-rnorm(10) } after population of a list you can print it as a whole or only part. Here is an example with your code. n <- seq(5,10,by=1) lll <- vector(mode = "list", length = 10) names(lll) <- c("mat1", "mat2", "mat3", "mat4", "cut1", "cut2", "out3a", "out3b", "out4a", "out4b") n <- seq(5,10,by=1) for(i in n) { z1 <- rnorm(n,mean=400, sd=70) z2 <- rnorm(n,mean=450, sd=90) cor <- runif(1,min=0.4, max=0.6) X <- z1 Y = cor*z1+(1-cor)*z2 lll[["mat1"]] <- cbind(X,Y) dev1 <- sample(-40:40, 1, replace=T) lll[["cut1"]] <- mean(X) + dev1 dev2 <- sample(12:54, 1, replace=T) lll[["cut2"]] <- mean(X) + dev1 + dev2 X2 <- X-cut1 Y2 <- Y-cut2 c3 <- cor(X2,Y2) lll[["mat2"]] <-cbind(X2,Y2) a11 <- ifelse( X < cut1 & Y < cut2, 1, 0) a12 <- ifelse( X < cut1 & Y >= cut2, 1, 0) a21 <- ifelse( X >= cut1 & Y < cut2, 1, 0) a22 <- ifelse( X >= cut1 & Y >= cut2, 1, 0) lll[["mat3"]] <-matrix(c(sum(a11),sum(a21), sum(a12),sum(a22)), nrow = 2) lll[["mat4"]] <-matrix(c(sum(a11),sum(a22), sum(a12),sum(a21)), nrow = 2) lll[["out3a"]] <- mcnemar.test(mat3, correct=FALSE) lll[["out3b"]] <- mcnemar.test(mat3, correct=TRUE) lll[["out4a"]] <- chisq.test(mat4, correct = FALSE) lll[["out4b"]] <- chisq.test(mat4, correct = TRUE) } print(lll) > > Other than the sample size of the random draws I would like to nest for > loops for cor, dev1, and dev2 according to the following sequences > respectively: > > cor <- seq(-0.5,0.5, by=0.25) do not use floating points in cycle. better to use for (k in 1:n) { cc <- cor[k] make computation with cc } > > dev1 <- seq(-100,100, by=10) > > dev2 <- seq(12,54, by=10) > > . > > After doing so I would like to put each matrix and their respective > tests into a text file so that I can examine the results. I would like > to put the results in a .txt file each time the loop finishes one case. > I would like to append this text file with subsequent matrices and > results rendered by each iteration of the nested for loop. I have seen > some very nice examples of output that R can render. I would like to > simply display each matrix and their tests. maybe R2HTML or latex in Hmisc package can Regards Petr > > Thank you to all the teachers and students on this forum. The only > reason I have been able to craft this inquiry is due to the questions > and answers I have found through searching the archive. Thank you > kindly for your assistance and for freely sharing your knowledge. > > Best wishes, > Thomas > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. ______________________________________________ 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.