<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Note that `CJ` by default sorts the columns and sets key to all the columns, which means the result would be sorted as well. If that's not desirable, you should be using `CJ` with `sorted=FALSE`.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <div id="bloop_sign_1402848344897121792" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">Arun</div></div> <div style="color:black"><br>From: <span style="color:black">Arunkumar Srinivasan</span> <a href="mailto:aragorn168b@gmail.com">aragorn168b@gmail.com</a><br>Reply: <span style="color:black">Arunkumar Srinivasan</span> <a href="mailto:aragorn168b@gmail.com">aragorn168b@gmail.com</a><br>Date: <span style="color:black">June 15, 2014 at 6:04:59 PM</span><br>To: <span style="color:black">G See</span> <a href="mailto:gsee000@gmail.com">gsee000@gmail.com</a><br>Cc: <span style="color:black">datatable-help@lists.r-forge.r-project.org</span> <a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a><br>Subject: <span style="color:black"> Re: [datatable-help] subsetting by second key <br></span></div><br> <blockquote type="cite" class="clean_bq"><span><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div></div><div>
<title></title>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
Sure, you can update it. No, there's no advantage. I just dint
think of CJ at the time (probably because I tried it with J and it
worked, because it's just 1 value for the 2nd key col).</div>
<div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">
<br></div>
<div id="bloop_sign_1402848219520715008" class="bloop_sign">
<div style="font-family:helvetica,arial;font-size:13px">Arun</div>
</div>
<div style="color:black"><br>
From: <span style="color:black">G See</span> <a href="mailto:gsee000@gmail.com">gsee000@gmail.com</a><br>
Reply: <span style="color:black">G See</span> <a href="mailto:gsee000@gmail.com">gsee000@gmail.com</a><br>
Date: <span style="color:black">June 15, 2014 at 6:03:13
PM</span><br>
To: <span style="color:black">Arunkumar Srinivasan</span>
<a href="mailto:aragorn168b@gmail.com">aragorn168b@gmail.com</a><br>
Cc: <span style="color:black">datatable-help@lists.r-forge.r-project.org</span>
<a href="mailto:datatable-help@lists.r-forge.r-project.org">datatable-help@lists.r-forge.r-project.org</a><br>
Subject: <span style="color:black">Re: [datatable-help]
subsetting by second key<br></span></div>
<br>
<blockquote type="cite" class="clean_bq">
<div>
<div><span>Thank you Arun. Should that answer be updated to use
CJ(.), then? Is<br>
there an advantage to using J(.) over CJ(.) if you know that
you're<br>
only looking for one value in the second column?<br>
<br>
On Sun, Jun 15, 2014 at 10:56 AM, Arunkumar Srinivasan<br>
<aragorn168b@gmail.com> wrote:<br>
> unique(Species) is of length 3, where as the 2nd entry c(1.5,
2) is of<br>
> length 2.<br>
><br>
> J in J(.) is replaced with list(.) internally (using lazy
evaluation),<br>
> following which it’s converted to a data.table using
as.data.table(list(.)).<br>
><br>
> And here your list is:<br>
><br>
> list(c("setosa", "versicolor", "virginica") , c(1.5, 2.0))
which results in<br>
> the warning because it has to recycle to convert it to a
data.table.<br>
><br>
> In the example you’ve linked, J(.) and CJ(.) will return the
same result<br>
> (because there’s just one value in 2nd column). So, the
results don’t<br>
> change. But the general expression is to use CJ(.) along with
nomatch=0L, as<br>
> you’ve done.<br>
><br>
> Those two expressions are equivalent, yes.<br>
><br>
><br>
> Arun<br>
><br>
> From: G See gsee000@gmail.com<br>
> Reply: G See gsee000@gmail.com<br>
> Date: June 15, 2014 at 5:45:11 PM<br>
> To: datatable-help@lists.r-forge.r-project.org<br>
> datatable-help@lists.r-forge.r-project.org<br>
> Subject: [datatable-help] subsetting by second key<br>
><br>
> Hi,<br>
><br>
> I want to subset a data.table using only its second key, which
is<br>
> demonstrated here<br>
>
http://stackoverflow.com/questions/15597685/subsetting-data-table-by-2nd-column-only-of-a-2-column-key-using-binary-search/15597713#15597713<br>
><br>
> However, I need to subset with more than one value in the
secondary key<br>
><br>
> Is this warning expected? What exactly is it telling me?<br>
><br>
> library(data.table)<br>
> DT <- data.table(iris, key="Species,Petal.Width")<br>
> DT[J(unique(Species), c(1.5, 2.0)), nomatch=0L]<br>
> # Sepal.Length Sepal.Width Petal.Length Petal.Width
Species<br>
> #1: 6.0 2.2 5.0 1.5 virginica<br>
> #2: 6.3 2.8 5.1 1.5 virginica<br>
> #Warning message:<br>
> #In as.data.table.list(i) :<br>
> # Item 2 is of size 2 but maximum size is 3 (recycled leaving
a<br>
> remainder of 1 items)<br>
><br>
><br>
> It looks like I can get what I want with either of these; can
you<br>
> confirm that both of these will always return the same
result?<br>
><br>
> DT[Petal.Width %in% c(1.5, 2.0)] # vector scan<br>
> DT[CJ(unique(Species), c(1.5, 2.0)), nomatch=0L]<br>
><br>
><br>
> Thanks,<br>
> Garrett<br>
> _______________________________________________<br>
> datatable-help mailing list<br>
> datatable-help@lists.r-forge.r-project.org<br>
>
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help<br>
</span></div>
</div>
</blockquote>
</div></div></span></blockquote></body></html>