1)貓您可以添加cat
,message
或print
報表功能。
2)跟蹤,或者如果你不想修改函數本身則trace
這樣說:
# test function
fun <- function(x) length(x)
trace(fun, quote(print(i <<- i + 1)))
i <- 0
out <- sapply(iris, fun)
,並提供:
Tracing FUN(X[[i]], ...) on entry
[1] 1
Tracing FUN(X[[i]], ...) on entry
[1] 2
Tracing FUN(X[[i]], ...) on entry
[1] 3
Tracing FUN(X[[i]], ...) on entry
[1] 4
Tracing FUN(X[[i]], ...) on entry
[1] 5
爲了扭轉這一使用untrace(fun)
。
3)包裝另一種可能性是創建一個包裝。 flush.console
是可選的,並且具有避免控制檯緩衝的效果,因此您可以立即看到輸出。
wrap_fun <- function(x) { print(i <<- i + 1); flush.console(); fun(x) }
i <- 0
out <- sapply(iris, wrap_fun)
4)tkProgressBar一種有些發燒友的方法是使用一個進度條。此示例代碼使用tcltk軟件包,它是所有標準R發行版中的開箱即用軟件包(因此您無需下載並安裝它 - 它已經存在,並且library
語句足以加載它)。
library(tcltk)
fun2 <- function(x) Sys.sleep(2) # test function
wrap_fun2 <- function(x) {
i <<- i + 1
setTkProgressBar(bar, i, label=i)
fun2(x)
}
bar <- tkProgressBar("Progress", max = 5)
i <- 0
out <- sapply(iris, wrap_fun2)
close(bar)
另見?txtProgressBar
和?winProgressBar
(僅Windows)以及進度包可用其它進度條。
親愛的格洛騰迪克,非常感謝你的回覆。但是,我嘗試使用您建議的代碼,但它不起作用。我使用兩個函數(nullmodel和computeModules),它們構建在R包(二部分)中,所以我不能修改它。如果我使用建議的第一個解決方案(跟蹤),我如何使用我的腳本?謝謝。 – Marco
你可以跟蹤包中的函數。 「trace」幫助文件中甚至有一個例子。 –
謝謝。我已閱讀此幫助,但未找到解決方案。我會再看看。 – Marco