title: How do you create dynamic axis labels using ylab() in ggplot2?
body: <p>I am making a series of plots in ggplot2, one per column of data, and I'd like to be able to code it so that the Y-axis label changes dynamically to the name of the plotted variable (and some other constant info in the label).</p>
  
  <p>my data from <code>dput()</code>:</p>
  
  <pre><code>df &lt;- structure(list(day = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
  1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
  3L, 3L, 3L, 3L), .Label = c("5-Aug", "10-Aug", "17-Aug"), class = "factor"), 
  station = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
  1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L
  ), Bug = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
  1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 
  3L, 3L, 3L), .Label = c("Copepod", "Copepod nauplii", "Harpactioid copepods"
  ), class = "factor"), Mean = c(382.4048896, 1017.171389, 
  1519.141298, 233.3753491, 167.1086422, 530.7227507, 20.55943305, 
  482.9992303, 10.49548997, 698.0193699, 5398.533995, 2458.635058, 
  36.90431458, 124.4956045, 20.8459728, 8.414735929, 4014.649407, 
  7.279486288, 346.1246378, 5722.82018, 6253.357325, 427.6856315, 
  1768.984975, 1486.635443, 4.825526305, 46.50462845, 1.07692853
  ), StErr = c(83.18963396, 100.9187504, 73.45417607, 88.08491141, 
  44.57580452, 44.03459391, 4.663586058, 112.4238952, 2.551982788, 
  284.3933876, 3417.741042, 689.5558519, 9.798626545, 49.16103906, 
  4.268815029, 3.76465482, 1803.977156, 1.328408258, 53.67873047, 
  1796.827256, 732.573507, 86.56594682, 198.7842421, 229.0132055, 
  1.129940095, 16.48065742, 0.283417726)), .Names = c("day", 
  "station", "Bug", "Mean", "StErr"), row.names = c(NA, -27L), class = "data.frame")
  </code></pre>
  
  <p>I am using the following code to automatically create and save a new, dynamically named .pdf:</p>
  
  <pre><code>library(ggplot2)
  df$day&lt;-factor(df$day, levels = c("5-Aug","10-Aug","17-Aug")) #corrects day order
  
  allplots &lt;- ggplot(data=df, aes(x=station, y=Mean)) + 
      geom_errorbar(aes(ymin=(Mean-StErr), ymax=(Mean+StErr)), colour="black", width=0.1)+
      geom_point(size=2) + 
      xlab(NULL) +
      ylab(expression(paste('Copepods,'~'#/m'^3))) +
      theme_bw() +
      theme(
      panel.grid.major = element_blank(),
      panel.grid.minor = element_blank()
      ) + 
      scale_x_continuous(expand=c(.3,0), breaks=c(1:3), labels=c("In", "FL", "Off")) +
      annotation_logticks(sides = "l") + 
      scale_y_log10() +
      theme(axis.text.x=element_text(size=12)) +
      theme(axis.text.y=element_text(size=12)) +
      facet_grid(Bug ~ day)
  
  plotfun &lt;- function(x,y) {
      a &lt;- ggplot(data=x, aes(x=station, y=Mean)) +
          geom_errorbar(aes(ymin=(Mean-StErr), ymax=(Mean+StErr)), colour="black", width=0.1)+
          geom_point(size=2) + 
          xlab(NULL) +
          ylab(expression(paste('Copepods,'~'#/m'^3))) + #I'd like Copepods to change with variable that is being plotted
          theme_bw() +
          theme(
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()
          ) + 
          scale_x_continuous(expand=c(.3,0), breaks=c(1:3), labels=c("In", "FL", "Off")) +
          annotation_logticks(sides = "l") + 
          scale_y_log10() +           
          theme(axis.text.x=element_text(size=12)) +
          theme(axis.text.y=element_text(size=12)) +              
          facet_grid(.~day)
   pdf(file=paste(y,'pdf',sep="."))
   print(a)
   dev.off()  
       }
  
  mapply(plotfun, split(df, df$Bug), levels(df$Bug)) 
  </code></pre>
  
  <p>I tried using <code>paste(levels(df$Bug))</code> within the ylab() but couldn't get it to work. I'm not sure what else to try, and was hoping someone would be able to suggest something I can look into.  I would like each Y-axis to read "<code>VariableName</code>, per m^3" with the VariableName taken from the levels of Bug (i.e. Copepod, Copepod nauplii, and Harpacticoid copepods).  Does anyone know how to do this? This seems really cool and useful if I can get it to work! Thanks for any suggestions.</p>