Hi, You can try: par(mfrow=c(3, 2)) mapply(hist,split(a,col(a)),main=colnames(a),xlab="x")
If you look at the output, mapply(hist,a,main=colnames(a),xlab="x") [,1] [,2] [,3] breaks Numeric,2 Numeric,2 Numeric,2 counts 1 1 1 density 2 5 20 mids 0.75 0.3 0.025 xname "dots[[1L]][[1L]]" "dots[[1L]][[2L]]" "dots[[1L]][[3L]]" equidist TRUE TRUE TRUE [,4] [,5] [,6] breaks Numeric,2 Numeric,2 Numeric,2 counts 1 1 1 density 10 5 1 mids 0.15 0.3 0.5 _____________________________________ [,46] [,47] [,48] breaks Numeric,2 Numeric,2 Numeric,2 counts 1 1 1 density 0.002 0.01 0.02 mids -6250 -950 275 xname "dots[[1L]][[46L]]" "dots[[1L]][[47L]]" "dots[[1L]][[48L]]" equidist TRUE TRUE TRUE [,49] [,50] breaks Numeric,2 Numeric,2 counts 1 1 density 0.001 0.005 mids 10500 3300 xname "dots[[1L]][[49L]]" "dots[[1L]][[50L]]" equidist TRUE TRUE #it is going through every single observation rather than by columns. A.K. ----- Original Message ----- From: C W <tmrs...@gmail.com> To: arun <smartpink...@yahoo.com> Cc: R help <r-help@r-project.org> Sent: Thursday, April 18, 2013 7:20 PM Subject: Re: [R] How to keep plot title same as column name using apply/sapply? > mapply(hist,as.data.frame(a),main=colnames(a),xlab="x") Why it does't work when I use "a" instead of "as.data.frame(a)"? ?mapply says "arguments to vectorize over (vectors or lists of strictly positive length, or all of zero length)." Thanks, Mike On Thu, Apr 18, 2013 at 6:49 PM, arun <smartpink...@yahoo.com> wrote: > Hi, > Try: > par(mfrow=c(3, 2)) > mapply(hist,as.data.frame(a),main=colnames(a),xlab="x") > A.K. > > > > > ----- Original Message ----- > From: C W <tmrs...@gmail.com> > To: r-help <r-help@r-project.org> > Cc: > Sent: Thursday, April 18, 2013 6:30 PM > Subject: [R] How to keep plot title same as column name using apply/sapply? > > Dear list, > I am trying to plot histogram of a 10 by 5 matrix by columns. > > What is a good way to paste the column names? > > dput(a) > structure(c(0.891856482875103, 0.249593821948295, 0.0385066520473322, > 0.109098868876336, 0.238035894186719, 0.971470380855763, 0.168018536530906, > 0.941457062296419, -0.285381460315397, -0.0229335863796271, -20138.175683257, > 28190.7238887329, 8521.44473371867, 37565.8599592035, -61036.6139527803, > -57278.42539968, 24284.2860193156, 57470.8275786857, -5035.05919672665, > -48223.3060594833, 0.105003428645432, 0.0385466025676578, 0.130895042931661, > 0.0682065344415605, 0.155879093753174, 0.0598988083656877, 0.121624303748831, > 0.120134906983003, 0.159434637567028, 0.0144033632241189, 6133.33965969139, > 5363.20408479208, 22432.8473630982, 10627.5697498379, 273.481263455154, > 8326.07386291277, 133.117356408579, 4108.23352922685, 643.558745779806, > 5532.10081652847, -4512.80115728638, -5839.1178791698, 7341.05048720629, > -1299.37511688102, -13151.5558568303, -6442.78100296569, -975.590624649323, > 298.440121450997, 10808.9562034117, 3210.22497745543), .Dim = c(10L, > 5L), .Dimnames = list(NULL, c("Tmrw", "hRm2", "vm", "Fluid", > "SM"))) > par(mfrow=c(3, 2)) > apply(a, 2, function(x){hist(x, main="column name here")}) > > This plots, but doesn't plot title. > > But, >> apply(a,2,function(x){colnames(x)}) > NULL > > Maybe the column names is lost? But, I see column names here. > >> apply(a,2,function(x){is.vector(x)}) > Tmrw hRm2 vm Fluid SM > TRUE TRUE TRUE TRUE TRUE > > My understanding is that, apply() takes data matrix column by column, > and pastes names back on at the end? But I need it for plot title, > how should I change my code? > > Thanks, > Mike > > ______________________________________________ > 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.