Matthew,<div><br></div><div>Thanks for the reply.  It turns out that the problem I was reporting was in data.table version 1.6.6, R version 2.13.1.    The issue is fixed in 1.7.1, the current version. I should know better than to report problems without version numbers (and without checking if there is a more recent version).  Sorry for the noise.</div>
<div><br></div><div>            -s<br><br><div class="gmail_quote">On Fri, Oct 28, 2011 at 20:53, Matthew Dowle <span dir="ltr">&lt;<a href="mailto:mdowle@mdowle.plus.com">mdowle@mdowle.plus.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Fri, 2011-10-28 at 18:46 -0400, Stavros Macrakis wrote:<br>
&gt; &gt; t1 &lt;- data.table(a=1:3,b=1/(1:3))<br>
&gt; &gt; t1[1,2]&lt;- 99<br>
&gt;<br>
&gt;<br>
&gt; Shouldn&#39;t this give an error?<br>
</div>Why? What else could it mean other than what it does :<br>
&gt; t1<br>
     a         b<br>
[1,] 1 1.0000000<br>
[2,] 2 0.5000000<br>
[3,] 3 0.3333333<br>
&gt; t1[1,2]&lt;- 99<br>
&gt; t1<br>
     a          b<br>
[1,] 1 99.0000000<br>
[2,] 2  0.5000000<br>
[3,] 3  0.3333333<br>
<div class="im"><br>
<br>
&gt; With with=T (the default), this doesn&#39;t make sense, and the resulting<br>
&gt; DT is not valid:<br>
<br>
</div>The [&lt;- method is different to the [ method of data.table.<br>
<div class="im"><br>
&gt;<br>
&gt;<br>
&gt; &gt; t1<br>
&gt; Error in data.table(lapply(x, function(x) { :<br>
&gt;   every input must have at least one value, unless all columns are<br>
&gt; empty<br>
<br>
</div>I can&#39;t reproduce this. I got a different (correct) error :<br>
&gt; t1[1,2,with=FALSE]&lt;- 99<br>
Error in `[&lt;-.data.table`(`*tmp*`, 1, 2, with = FALSE, value = 99) :<br>
  unused argument(s) (with = FALSE)<br>
<div class="im"><br>
<br>
&gt;<br>
&gt;<br>
&gt; In fact, I&#39;m not sure how to modify an individual cell in a DT:<br>
<br>
</div>It already did, above.  But, := is faster and shorter than &lt;-.<br>
<div class="im"><br>
&gt;<br>
&gt;<br>
&gt; &gt; t1 &lt;- data.table(a=1:3,b=1/(1:3))<br>
&gt; &gt; t1[1,2,with=F]&lt;- 99<br>
&gt; Error in `[&lt;-.data.table`(`*tmp*`, 1, 2, with = F, value = 99) :<br>
&gt;   unused argument(s) (with = F)<br>
&gt;<br>
&gt;<br>
&gt; On the other hand, you can apparently modify an entire column:<br>
&gt;<br>
&gt;<br>
&gt; t1 &lt;- data.table(a=1:3,b=1/(1:3))<br>
&gt; &gt; t1$b &lt;- 11:13<br>
&gt; &gt; t1<br>
&gt;      a  b<br>
&gt; [1,] 1 11<br>
&gt; [2,] 2 12<br>
&gt; [3,] 3 13<br>
&gt;<br>
&gt;<br>
&gt; And modifying a key column very sensibly makes it no longer a key:<br>
&gt;<br>
&gt;<br>
&gt; &gt; t2 &lt;- data.table(a=1:3,b=1/(1:3),key=&quot;a&quot;)<br>
&gt; &gt; key(t2)<br>
&gt; [1] &quot;a&quot;<br>
&gt; &gt; t2$a &lt;- 11:13<br>
&gt; &gt; key(t2)<br>
&gt; NULL<br>
&gt;<br>
<br>
</div>Yes, all intended and correct, iiuc.<br>
<br>
&gt; _______________________________________________<br>
&gt; datatable-help mailing list<br>
&gt; <a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a><br>
&gt; <a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help" target="_blank">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help</a><br>
<br>
<br>
</blockquote></div><br></div>