Написание декоратора для функций R - PullRequest
17 голосов
/ 28 января 2011

Недавно коллега смотрел на графики звонков и хотел посмотреть, что называется чем. Мы отсортировали это с помощью foodweb из mvbutils, но мне было интересно, как лучше создать декоратор (на языке Python) в R. Итак, я сделал это:

instrument=function(z){
  force(z) 
  n=deparse(substitute(z)) # get the name
  f=function(...){
   cat("calling ", n,"\n")
   x=z(...)
   cat("done\n")
   return(x)
   }
  return(f)
}

Это позволяет мне сделать:

> foo=function(x,y){x+y}
> foo(1,2)
[1] 3

и теперь я могу сделать сам журнал функции, обернув его:

> foo=instrument(foo)
> foo(1,2)
calling  foo
done
[1] 3

было ли это сделано раньше, скажем в пакете, и я пропустил какие-то ошибки, которые нарушат мой способ сделать это?

1 Ответ

10 голосов
/ 28 января 2011

Функция trace в R делает это. Смотри ?trace.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...