我正在尝试查找特定代码子集在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=2
和at=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
?