<div dir="ltr">Thanks for pointing that out. I didn't know about (= think to search for) that global option. I think I'll leave it as NA since, as you say, it's reasonably useful.<div><br></div><div>I forgot that people may want to switch to allow.cartesian = TRUE (although I never find myself wanting to use this) after seeing the error. So, a modified (very minor) FR: have the error message suggest switching to nomatch=0 (because this is what I personally find myself switching to after I see the error, though I don't know how common that choice is...).<div>

<br></div><div>I still don't understand the mention of "duplicate key values in i" in the message, as the problem seems to be with duplicated values in x (at least in my example above).</div><div><br></div>
<div>
--Frank</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Oct 14, 2013 at 12:42 AM, Michael Nelson <span dir="ltr"><<a href="mailto:michael.nelson@sydney.edu.au" target="_blank">michael.nelson@sydney.edu.au</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div>
<div style="direction:ltr;font-size:10pt;font-family:Tahoma"><br>
The default argument to nomatch is `'getOption("datatable.nomatch")`. The default value for this is `NA`. 
<div><br>
</div>
<div>If you want to change this option, simply set `options(datatable.nomatch = 0)`, then the default will be as you want.</div>
<div><br>
</div>
<div>I think the current datatable.nomatch = NA is reasonable, as you are often interested in non-matches as well as matches.</div>
<div><br>
</div>
<div>x[y, nomatch=NA] to give a error in your case, then follow the advice of the error message and run</div>
<div><br>
</div>
<div>x[y, nomatch=NA, allow.cartesian = TRUE]</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
<br>
<br>
<div style="font-size:16px;font-family:Times New Roman">
<hr>
<div style="direction:ltr"><font face="Tahoma" color="#000000"><b>From:</b> <a href="mailto:datatable-help-bounces@lists.r-forge.r-project.org" target="_blank">datatable-help-bounces@lists.r-forge.r-project.org</a> [<a href="mailto:datatable-help-bounces@lists.r-forge.r-project.org" target="_blank">datatable-help-bounces@lists.r-forge.r-project.org</a>] on behalf of Frank Erickson [<a href="mailto:FErickson@psu.edu" target="_blank">FErickson@psu.edu</a>]<br>


<b>Sent:</b> Monday, 14 October 2013 1:03 PM<br>
<b>To:</b> data.table source forge<br>
<b>Subject:</b> [datatable-help] possible FR: in x[y], switch to nomatch=0 instead of failing with "Error in vecseq..."<br>
</font><br>
</div><div><div class="h5">
<div></div>
<div>
<div dir="ltr">I don't know if this error shows up in other cases, but I always see it when I'm about to do
<div><br>
</div>
<div><font face="courier new, monospace">x[y,b:=b]</font></div>
<div><br>
</div>
<div>but first want to check how </div>
<div><br>
</div>
<div><font face="courier new, monospace">x[y]</font></div>
<div><br>
</div>
<div>looks before creating or overwriting x$b. Here's an example:</div>
<div><br>
</div>
<div>
<div><font face="courier new, monospace">x <- data.table(a=rep(2:3,2),key='a')</font></div>
<div><font face="courier new, monospace">y <- data.table(a=1:4,b=4:1,key='a')</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">x[y]           # error</font></div>
</div>
<div><font face="courier new, monospace">x[y,nomatch=0] # ok<br>
</font></div>
<div><font face="courier new, monospace">x[y,b:=b]      # ok</font></div>
<div><br>
</div>
<div>I'd prefer to see the first attempt mapped to the second (with a suitable message), instead of erroring out. What do you all think? Is that reasonable/worthwhile?</div>
<div><br>
</div>
<div>Best,</div>
<div><br>
</div>
<div>Frank</div>
<div><br>
</div>
<div>
<div>P.S. One other point, regarding the message itself (reproduced down below): I don't understand why repeated values in i are mentioned.</div>
<div><br>
</div>
<div>-- For x[y] in my example, the problem seems to be coming from x having repeated rows, not i (y in this case); </div>
<div>-- whereas y[x] works just fine (despite the repeated/duplicated values in i...which is x here).</div>
</div>
<div><br>
</div>
<div>
<div><font face="courier new, monospace">Error in vecseq(f__, len__, if (allow.cartesian) NULL else as.integer(max(nrow(x),  : </font></div>
<div><font face="courier new, monospace">  Join results in 6 rows; more than 4 = max(nrow(x),nrow(i)). Check for duplicate key values in i, each of which join to the same group in x over and over again. If that's ok, try including `j` and dropping `by` (by-without-by)
 so that j runs for each group to avoid the large allocation. If you are sure you wish to proceed, rerun with allow.cartesian=TRUE. Otherwise, please search for this error message in the FAQ, Wiki, Stack Overflow and datatable-help for advice.</font></div>


</div>
</div>
</div>
</div></div></div>
</div>
</div>
</div>

<br>_______________________________________________<br>
datatable-help mailing list<br>
<a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a><br>
<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></blockquote></div><br></div>