[R] boxplot() from list

Marc Schwartz MSchwartz at MedAnalytics.com
Sun Sep 12 19:01:18 CEST 2004


On Sun, 2004-09-12 at 11:42, Prof Brian Ripley wrote:
> On Sun, 12 Sep 2004, Marc Schwartz wrote:
> 
> > 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.
> 
> I think that is overly complex, as boxplot accepts a list.  I had tested
> (but decided not to send)
> 
> mylist <- vector("list", 48)
> for(i in 1:48) mylist[[i]] <- matrix(rnorm(30*4), 30) 
> 
> for (J in 1:4) boxplot(lapply(mylist, function(x, j) x[, j], j = J))


Fair enough. I did not want to presume that the remaining arguments to
boxplot might be the same for each plot. Though one could also put those
into an appropriate structure and still do the loop.

Also, if using the display, one would probably want to set par(ask =
TRUE), lest the four plots flash by in rapid sequence.

Marc




More information about the R-help mailing list