[datatable-help] lapply without anonymous function

Gabor Grothendieck ggrothendieck at gmail.com
Mon Nov 11 15:06:48 CET 2013


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