[R] Deleting for() loop in function
    Duncan Murdoch 
    murdoch at stats.uwo.ca
       
    Wed Oct 10 22:16:49 CEST 2007
    
    
  
On 10/10/2007 2:03 PM, Alberto Monteiro wrote:
> Jim Holtman wrote:
>>
>> One of the things that you should do is to use Rprof
>> to see where time is being spent. 
>>
> Rprof is great! I didn't know such functionality existed.
> 
> But I am a very destructive user; I think I found a way
> to break Rprof: if I do 
> 
> f <- my.slow.function 
> 
> then call
> 
> f(...)
> 
> Rprof will report that f (and not my.slow.function) was
> called <evil grin>.
But it was f that was called.  Nothing got broken.
> I noticed that because I "tested" Rprof with one of my
> programs that do test cases; these test cases run with
> an array of functions, by calling each function from
> the array - precisely what can't be traced by Rprof :-)
One way around this would be to put the names of the functions in a 
vector, and use do.call to call them, e.g.
names <- c("slow1", "slow2")
Rprof()
for (i in 1:2) do.call(names[i], list() )
Rprof(NULL)
summaryRprof()
This should show slow1 and slow2 in the report, because those are the 
names that end up on the call stack.
Duncan Murdoch
    
    
More information about the R-help
mailing list