[datatable-help] Indexing by a logical column

G See gsee000 at gmail.com
Tue Apr 23 21:16:38 CEST 2013


Thank you.  Very helpful, as always.

Garrett

On Tue, Apr 23, 2013 at 2:12 PM, Matthew Dowle <mdowle at mdowle.plus.com> wrote:
>
> Hi,
> Yes expected. From ?data.table:
> "Advanced: When i is a single variable name, it is not considered an
> expression of column names and is instead evaluated in calling scope."
> Subsetting by a logical column is the only example I can think of where this
> is confusing. But we make use of this feature quite a lot e.g.
>     TMP=list(...);DT[TMP]
> safe in the knowledge that DT[TMP] won't start to fail if DT in future has a
> column called TMP.
> When I have a logical column boolCol I wrap with ():   DT[(boolCol)].   This
> avoids the memory allocation and scan of ==TRUE,  and avoids the variable
> name repetition of DT[DT$boolCol]
> Matthew
>
>
>
> On 23.04.2013 19:46, G See wrote:
>>
>> Hi,
>>
>> Is the following expected behavior?
>>
>> DT = data.table(x=rep(c("a","b","c"),each=3), TF=c(TRUE,FALSE,TRUE))
>>
>> #All of these return what I expect:
>>
>> DT[c(TRUE, FALSE, TRUE)]
>> DT[TF==TRUE]
>> DT[DT$TF]
>>
>> #Why doesn't this?
>> DT[TF]
>> #Error in eval(expr, envir, enclos) : object 'TF' not found
>>
>> Thanks,
>> Garrett
>> _______________________________________________
>> datatable-help mailing list
>> datatable-help at lists.r-forge.r-project.org
>>
>>
>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help


More information about the datatable-help mailing list