[datatable-help] lapply without anonymous function

G See gsee000 at gmail.com
Mon Nov 11 15:40:34 CET 2013


heh, after all my efforts to avoid subset(), it can be useful after all. :)

Bug report filed, per Eduard's suggestion.

On Mon, Nov 11, 2013 at 8:06 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
> On Sun, Nov 10, 2013 at 2:39 PM, G See <gsee000 at gmail.com> wrote:
>> Hi,
>>
>> I have a list of data.tables and I am trying to extract a subset from
>> each of them.  I can achieve what I want with this:
>>
>>> L <- list(data.table(BOD), data.table(BOD))
>>> lapply(L, function(x) x[Time==3L])
>> [[1]]
>>    Time demand
>> 1:    3     19
>>
>> [[2]]
>>    Time demand
>> 1:    3     19
>>
>> However, I'd rather not type have to create an anonymous function.  I
>> tried the below, but `[.data.frame` is being dispatched.
>>
>>> lapply(L, "[", Time==3L)
>> Error in `[.data.frame`(x, i) : object 'Time' not found
>>
>> Even if I am explicit, `[.data.table` does not get dispatched:
>>
>>> lapply(L, data.table:::`[.data.table`, Time==3L)
>> Error in `[.data.frame`(x, i) : object 'Time' not found
>>
>> I'm guessing this is due to where evaluation takes place.  Is there an
>> alternate syntax I should use?
>>
>
> subset works:
>
>> lapply(L, subset, Time == 3L)
> [[1]]
>    Time demand
> 1:    3     19
>
> [[2]]
>    Time demand
> 1:    3     19
>
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com


More information about the datatable-help mailing list