Try this ... MDD.mean.s10 <- sapply(MC_MDD.noNA$results, function(x) x[[2]][, 7])
Jean On Thu, Dec 13, 2012 at 8:31 AM, Corinne Lapare <corinnelap...@gmail.com>wrote: > Hi! I am new to looping and R in general; and I have sent waaaay to much > time on this one problem and am about a hair away from doing it manually > for the next two days. > > > > So, there is a package that while calculating the statistic creates lists > (that look like matrices) in the background. Each item (there are 10 > items) has one of these matrix looking list that I need to extract data > from. The list has 5 rows that represent 5 groups, and 8 columns. I need > to extract 3 of the columns (Lo Score=[,2], Hi Score=[,3], and > Mean=[,7]) for each of the items. I then want to turn the extracted data > into 3 matrices (Lo Score, Hi Score, and Mean) where the rows are the > 5 groups and the columns are items 1-10. > > > > This is how I can create the mean matrix by hand. MDD.mean.s10 is the > matrix I want in the end. (notice the first bracket after $results is the > only part that changes 1-10 (to represent the 10 items) and the last > bracket is [,7] to represent the mean located in column 7) > > > m.1a <- MC_MDD.noNA$results[[1]][[2]][,7] > > > m.2b <- MC_MDD.noNA$results[[2]][[2]][,7] > > > m.3c <- MC_MDD.noNA$results[[3]][[2]][,7] > > > m.4d <- MC_MDD.noNA$results[[4]][[2]][,7] > > > m.5e <- MC_MDD.noNA$results[[5]][[2]][,7] > > > m.6f <- MC_MDD.noNA$results[[6]][[2]][,7] > > > m.7g <- MC_MDD.noNA$results[[7]][[2]][,7] > > > m.8h <- MC_MDD.noNA$results[[8]][[2]][,7] > > > m.9i <- MC_MDD.noNA$results[[9]][[2]][,7] > > > m.10j <- MC_MDD.noNA$results[[10]][[2]][,7] > > > MDD.mean.s10 <- cbind(m.1a, m.2b, m.3c, m.4d, m.5e, m.6f, m.7g, m.8h, > m.9i, m.10j) > > > > > > MDD.mean.s10 > > m.1a m.2b m.3c m.4d m.5e m.6f m.7g > m.8h m.9i m.10j > > [1,] 0.8707865 0.7393939 0.7769231 0.7591241 0.8533333 0.7925926 0.8258065 > 0.8410596 0.8843931 0.5638298 > > [2,] 0.8323353 0.7302632 0.5913978 0.5868263 0.6923077 0.6182796 0.6964286 > 0.6839080 0.7911392 0.3212121 > > [3,] 0.8726115 0.7159763 0.7117647 0.6163522 0.7987805 0.7105263 0.7613636 > 0.7674419 0.8034682 0.4011299 > > [4,] 0.9024390 0.7894737 0.7795276 0.6530612 0.8593750 0.7112676 0.8672566 > 0.8629032 0.9152542 0.4834437 > > [5,] 0.9861111 0.9102564 0.8452381 0.8160920 0.9726027 0.8658537 0.8352941 > 0.9342105 0.9466667 0.6454545 > > > > > > But I cant do this by hand every time, as this comes up over and over and > over again in multiple lists. > > I have figured out how to loop this procedure and name the vector as it > goes along: > > > for(i in 1:10){ > > + assign(paste("m", i, sep = ""), MC_MDD.noNA$results[[i]][[2]][,7]) > > + } > > > > > > > > > m1 > > [1] 0.8707865 0.8323353 0.8726115 0.9024390 0.9861111 > > > m2 > > [1] 0.7393939 0.7302632 0.7159763 0.7894737 0.9102564 > > > m3 > > [1] 0.7769231 0.5913978 0.7117647 0.7795276 0.8452381 > > > m4 > > [1] 0.7591241 0.5868263 0.6163522 0.6530612 0.8160920 > > > m5 > > [1] 0.8533333 0.6923077 0.7987805 0.8593750 0.9726027 > > > m6 > > [1] 0.7925926 0.6182796 0.7105263 0.7112676 0.8658537 > > > m7 > > [1] 0.8258065 0.6964286 0.7613636 0.8672566 0.8352941 > > > m8 > > [1] 0.8410596 0.6839080 0.7674419 0.8629032 0.9342105 > > > m9 > > [1] 0.8843931 0.7911392 0.8034682 0.9152542 0.9466667 > > > m10 > > [1] 0.5638298 0.3212121 0.4011299 0.4834437 0.6454545 > > > > > > Now here where I get stuck how do I cbind these vectors without typing it > out expliciity? ie. mean.MDD <- cbind(m1,m2,m3,m4,m5,m6,m7,m8,m9,10) > > > > Everything I have tried keeps overwriting the data instead of building a > matrix. Basically I, start with a matrix (5x10) of zeros. Then I wind up > with a few values in the beginning, but the rest is still zeros. > > Example of terrible code: > > > fo <- matrix(0,5,10) > > > colnames(fo) <- paste('f', 1:10, sep = "") > > > fo > > f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 > > [1,] 0 0 0 0 0 0 0 0 0 0 > > [2,] 0 0 0 0 0 0 0 0 0 0 > > [3,] 0 0 0 0 0 0 0 0 0 0 > > [4,] 0 0 0 0 0 0 0 0 0 0 > > [5,] 0 0 0 0 0 0 0 0 0 0 > > > for(i in 1:10){ > > + fo <- assign(paste("f", i, sep = ""), > MC_MDD.noNA$results[[i]][[2]][,7]) > > + } > > > fo > > [1] 0.5638298 0.3212121 0.4011299 0.4834437 0.6454545 > > > > > fo <- matrix(0,5,10) > > > colnames(fo) <- paste('f', 1:10, sep = "") > > > fo > > f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 > > [1,] 0 0 0 0 0 0 0 0 0 0 > > [2,] 0 0 0 0 0 0 0 0 0 0 > > [3,] 0 0 0 0 0 0 0 0 0 0 > > [4,] 0 0 0 0 0 0 0 0 0 0 > > [5,] 0 0 0 0 0 0 0 0 0 0 > > > for(i in 1:10){ > > + fo <- cbind(assign(paste("f", i, sep = ""), > MC_MDD.noNA$results[[i]][[2]][,7])) > > + } > > > fo > > [,1] > > [1,] 0.5638298 > > [2,] 0.3212121 > > [3,] 0.4011299 > > [4,] 0.4834437 > > [5,] 0.6454545 > > > > > > > > > > Thanks for your help in advance!!! (c: > > [[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. > > [[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.