<font class="Apple-style-span" face="arial, helvetica, sans-serif">Ah sorry -- the definition of ggplotDT() should be, of course:</font><br><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="font-family: arial; ">ggplotDT &lt;- function(...) {<br> ggplot(, aesDT(...))<br>}</span></font></div><div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="font-family: arial; "><br></span></font></div><div>(aes_now() was an artifact from Hadley Wickham&#39;s Stack Overflow tip)</div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="font-family: arial; "><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="font-family: arial; ">t</span></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><span class="Apple-style-span" style="font-family: arial; "><br></span></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font><div class="gmail_quote">2011/8/14 Timothée Carayol <span dir="ltr">&lt;<a href="mailto:timothee.carayol@gmail.com">timothee.carayol@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Hi,<br><br>For some time I have been wishing that data.table and ggplot2 could play a bit nicer together.<br>For example, I would like this to work but it doesn&#39;t:<br><br>&gt; test &lt;- data.table(a=1:10, b=1:10)<br>

&gt; test[, ggplot() + geom_line(aes(x=a, y=b))]<br>
Error in eval(expr, envir, enclos) : object &#39;a&#39; not found<br><br>I spent a few dozen minutes trying to understand what was going on (and stumbling upon <a href="http://stackoverflow.com/questions/3737619/how-can-i-pass-a-ggplot2-aesthetic-from-a-variable" target="_blank">this useful advice from Hadley Wickham</a>), and it turns out that it&#39;s very easy to fix (though the fix is not very pretty).<br>


Datatable-help, I present you with.. aesDT and ggplotDT.<br><br><br>aesDT &lt;- function(...) {<br>  aes &lt;- structure(list(...),  class = &quot;uneval&quot;)<br>  rename_aes(aes)<br>}<br><br>Using aesDT() instead of aes() whenever you are in a data.table (or in a with()) will now work. That is pretty much all you need, but I thought I&#39;d go just one tiny step further with ggplotDT():<br>


<br>ggplotDT &lt;- function(...) {<br>  ggplot(, aes_now(...))<br>}<br><br>which makes the following possible:<br><br>test[, ggplotDT(x=a, y=b) + geom_line()]<br><br><div>i.e. put the aesthetics directly as arguments, saving a few keystrokes and a pair of brackets.<br>


<div>Tiny problem that I have yet to solve: you now have to explicitly give the name of all the aesthetics; aes() is sufficiently clever to guess them if they&#39;re in the right order, but the logic does not seem to carry over straightforwardly to aesDT().</div>


<div><br></div><div>I know I&#39;ll be using these, so I thought maybe other people here might be interested.</div><div><br></div></div><div>Timothee</div>
</blockquote></div><br></div>