<div>Thanks for correction! </div><br><div class="gmail_quote">2011/11/7 Matthew Dowle <span dir="ltr">&lt;<a href="mailto:mdowle@mdowle.plus.com">mdowle@mdowle.plus.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">On Mon, 2011-11-07 at 10:47 -0600, Branson Owen wrote:<br>
&gt;<br>
&gt;<br>
&gt;         On Fri, Nov 4, 2011 at 9:15 AM, Chris Neff &lt;<a href="mailto:caneff@gmail.com">caneff@gmail.com</a>&gt;<br>
&gt;         wrote:<br>
&gt;         &gt; I&#39;d rather have the print.data.table function override the<br>
&gt;         &gt; print.data.frame one. How can I do this?<br>
&gt;<br>
&gt;         Try:<br>
&gt;<br>
&gt;         print.data.frame &lt;- data.table:::print.data.table<br>
&gt;<br>
&gt;<br>
&gt; Does it create a copy of &#39;print.data.frame&#39; in global environment?<br>
<br>
</div>A copy of print.data.table, yes. It might be a copy-on-write, not sure.<br>
<div class="im"><br>
&gt; &gt; base:::print.data.frame &lt;- data.table:::print.data.table<br>
<br>
</div>That doesn&#39;t work, does it?<br></blockquote><div><br></div><div>Oops, no. Shouldn&#39;t post my &#39;guess&#39; before I even try it by myself. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><br>
&gt; If print.data.frame is always called in global environment, I guess I<br>
&gt; worried too much.<br>
<br>
</div>Are you thinking about speed here?  .GlobalEnv is always pos 1 on<br>
search() so those functions are found quickest. base is last on search()<br>
so they&#39;re actually slower if repeated many times in a loop, due to<br>
searching() for them.  I think compile()&#39;d code might save the location<br>
in the byte code, to save the searching()ing, not sure.<br>
<br></blockquote><div><br></div><div>Interesting! I posted that problematic suggestion is because it worked for me in other case before. I was trying to overwrite data.table&#39;s default argument: &#39;nomatch&#39; = 0 instead of NA. I can&#39;t find a smart way to do it, and I end up with overwrite whole data.table function. At that time, data.table.fn &lt;- function() {...} is not enough. I found that I need to add scope operator ::: to overwrite internal function. </div>

<div><br></div><div>Thanks again for the correction! </div></div>