[R] Help with apply()

Nathan S. Watson-Haigh nathan.watson-haigh at csiro.au
Mon Feb 8 07:34:31 CET 2010


On 8/02/2010 4:33 PM, Jim Lemon wrote:
> On 02/08/2010 12:26 PM, Nathan S. Watson-Haigh wrote:
>    
>> I have a 2 column data.frame:
>>
>>   >  d[1:5,]
>> a b
>> 1 80015 C
>> 2 80016 B
>> 3 80023 C
>> 4 80062 B
>> 5 80069 B
>>
>> I want to apply a function across each row:
>>
>>   >  for(i in 1:nrow(d)) {
>> + myFun(con, d[i,]$a, d[i,]$b)
>> + }
>>
>> How do I do this using apply()? I'm unsure how to tell apply() to pass
>> data from columns a and b for a given row as arguments to the function
>> myFun().
>>
>>      
> Hi Nathan,
> apply doesn't work with data frames unless they can be coerced to
> matrices or arrays (and sometimes not even then). What's wrong with
> using the code you have above?
>
> Jim
>
>    

Nothing, I seem to remember seeing somewhere that R is slow at doing for 
loops and it's best to use apply. But I suppose that depends more on 
whether myFun() is the bottleneck or not!

Cheers,
Nathan

--------------------------------------------------------
Dr. Nathan S. Watson-Haigh
OCE Post Doctoral Fellow
CSIRO Livestock Industries
University Drive
Townsville, QLD 4810
Australia

Tel: +61 (0)7 4753 8548
Fax: +61 (0)7 4753 8600
Web: http://www.csiro.au/people/Nathan.Watson-Haigh.html



More information about the R-help mailing list