使用多个`trace`调用R函数的时间子集

时间:2016-02-08 21:32:24

标签: r

我正在尝试查找特定代码子集在cmprsk中占用多长时间,因此我希望将t0 = Sys.time()放在一个位置,t1 = Sys.time()放在另一个位置,然后打印通过cat(sprintf("time taken %f seconds", as.numeric(t1-t0, units="secs"))来区分差异。

我从print(as.list(body(crr)))知道时间的位置是at=2at=28。我使用以下行将trace放入:

trace(crr, 't0 = Sys.time();', at=2);
trace(crr, 't1 = Sys.time();', at=28);
trace(crr, 'cat(sprintf("time taken = %f", as.numeric(t1-t0, units="secs")));', at=40);

但是,当我运行代码时,看起来只有最后一个trace被使用。当我为grep运行脚本和Trace时,我得到以下内容:

Loading required package: splines
(loaded the methods namespace)
Tracing function "crr" in package "cmprsk"
Tracing function "crr" in package "cmprsk"
Tracing function "crr" in package "cmprsk"
    .doTrace("cat(sprintf(\"time taken = %f\", as.numeric(t1-t0, units=\"secs\")));",

这是否表示只保留了最后一个trace?如果是这样,我如何在原始函数中放置多个trace

0 个答案:

没有答案