[R] primitives again

Wacek Kusnierczyk Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Mon Mar 16 09:06:46 CET 2009


Berwin A Turlach wrote:
> On Sun, 15 Mar 2009 14:23:40 +0100
> Wacek Kusnierczyk <Waclaw.Marcin.Kusnierczyk at idi.ntnu.no> wrote:
>
>   
>> Edna Bell wrote:
>>     
>>> How do I find the functions which are primitives, please?
>>>   
>>>       
>> you can scan the whole search path for functions that are primitives:
>>
>>     primitives = sapply(search(), function(path)
>>      with(as.environment(path), Filter(is.primitive, lapply(ls(),
>> get))))
>>
>> primitives is a list of named lists of primitives, one sublist for
>> each attached package (most sublists will be empty, i guess).
>>     
>
> The code above will miss some primitives in package:base, namely those
> that start with a dot:
>   

oops, right:  it should have said

    primitives = sapply(search(), function(path)     
        with(as.environment(path), Filter(is.primitive,
lapply(ls(all.names=TRUE), get))))

i was aware of this, but forgot to type it in in the mail, while it was
there in the console, hence i haven't noticed the lack of dot-primitives.

thanks for pointing this out.


>
> Also, but that is a matter of taste, it could be preferable to use
> sapply instead of lapply:

yes, indeed.

vQ




More information about the R-help mailing list