I have a list containing 48 objects (each with 30 rows and 4 columns, all numeric), and wish to produce 4 boxplot series (with 48 plots in each) , one for each column of each object. Basically I want a boxplot from boxplot(mylist[[]][,i]) for i in 1:4. It seems that I can create a boxplot of length 48 from the entire list, but I don't seem able to subscript to return 4 boxplots from the list - I have also tried to create 4 new lists (one for each column of each object) by using variations on the following, but none seems to work: newlist<-oldlist[,1] newlist<-oldlist[[]][,1] newlist<-oldlist[[]][,$colone] can anyone please offer some insight?? Thanks in advance, Laura Quinn Institute of Atmospheric Science School of Earth and Environment University of Leeds Leeds LS2 9JT tel: +44 113 343 1596 fax: +44 113 343 6716 mail: laura at env.leeds.ac.uk
On Sun, 2004-09-12 at 10:10, Laura Quinn wrote:> I have a list containing 48 objects (each with 30 rows and 4 columns, all > numeric), and wish to produce 4 boxplot series (with 48 plots in each) , > one for each column of each object. > > Basically I want a boxplot from boxplot(mylist[[]][,i]) > > for i in 1:4. It seems that I can create a boxplot of length 48 from the > entire list, but I don't seem able to subscript to return 4 boxplots from > the list - I have also tried to create 4 new lists (one for each column of > each object) by using variations on the following, but none seems to work: > > newlist<-oldlist[,1] > newlist<-oldlist[[]][,1] > newlist<-oldlist[[]][,$colone] > > can anyone please offer some insight?? > > Thanks in advance,For each individual boxplot, you could do something like: boxplot(data.frame(sapply(mylist, function(x) x[, 1]))) adjusting the index (1) for each of the four columns in your list matrices. You can then adjust the additional arguments to boxplot() as you require. See ?sapply for more information on accessing list member elements and returning a vector or matrix. HTH, Marc Schwartz
Dear Laura, You don't say what kind of "objects" are in the list, but suppose that they are matrices; here's a scaled-down example using 3 list elements: M1 <- matrix(rnorm(30*4), 48, 4) M2 <- matrix(rnorm(30*4), 48, 4) M3 <- matrix(rnorm(30*4), 48, 4) L <- list(M1=M1, M2=M2, M3=M3) par(mfrow=c(3, 4)) lapply(L, function(x) apply(x, 2, boxplot)) I hope that this helps, John> -----Original Message----- > From: r-help-bounces at stat.math.ethz.ch > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Laura Quinn > Sent: Sunday, September 12, 2004 10:10 AM > To: r-help at stat.math.ethz.ch > Subject: [R] boxplot() from list > > I have a list containing 48 objects (each with 30 rows and 4 > columns, all numeric), and wish to produce 4 boxplot series > (with 48 plots in each) , one for each column of each object. > > Basically I want a boxplot from boxplot(mylist[[]][,i]) > > for i in 1:4. It seems that I can create a boxplot of length > 48 from the entire list, but I don't seem able to subscript > to return 4 boxplots from the list - I have also tried to > create 4 new lists (one for each column of each object) by > using variations on the following, but none seems to work: > > newlist<-oldlist[,1] > newlist<-oldlist[[]][,1] > newlist<-oldlist[[]][,$colone] > > can anyone please offer some insight?? > > Thanks in advance, > > Laura Quinn > Institute of Atmospheric Science > School of Earth and Environment > University of Leeds > Leeds > LS2 9JT