Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中显示长例程的中间步骤?_R_Loops_Social Networking_Bipartite_Sna - Fatal编程技术网

如何在R中显示长例程的中间步骤?

如何在R中显示长例程的中间步骤?,r,loops,social-networking,bipartite,sna,R,Loops,Social Networking,Bipartite,Sna,在R中运行长例程时,是否可以显示中间步骤 例如,我正在使用一个例程,基于空模型包bipartite构建原始矩阵的随机版本: 根据计算机的处理能力和N的大小,完成例行程序需要很长时间。我想包括一个代码,在控制台上显示例程第一部分和第二部分的所有中间步骤。比如矩阵1,矩阵2。。。矩阵 你能帮帮我吗?谢谢大家! 1 cat您可以向函数中添加cat、消息或打印语句 2跟踪,或者如果不想修改函数本身,则按如下方式跟踪: # test function fun <- function(x) lengt

在R中运行长例程时,是否可以显示中间步骤

例如,我正在使用一个例程,基于空模型包bipartite构建原始矩阵的随机版本:

根据计算机的处理能力和N的大小,完成例行程序需要很长时间。我想包括一个代码,在控制台上显示例程第一部分和第二部分的所有中间步骤。比如矩阵1,矩阵2。。。矩阵

你能帮帮我吗?谢谢大家!

1 cat您可以向函数中添加cat、消息或打印语句

2跟踪,或者如果不想修改函数本身,则按如下方式跟踪:

# test function
fun <- function(x) length(x) 

trace(fun, quote(print(i <<- i + 1)))

i <- 0
out <- sapply(iris, fun)
要扭转这种局面,请使用untracefun

3包装器另一种可能是创建包装器。flush.console是可选的,具有避免控制台缓冲的效果,因此您可以立即看到输出

wrap_fun <- function(x) { print(i <<- i + 1); flush.console(); fun(x) }

i <- 0
out <- sapply(iris, wrap_fun)
另请参见?txtProgressBar和?winProgressBar窗口,以及其他可用进度条的进度包。

1 cat您可以向函数添加cat、消息或打印语句

2跟踪,或者如果不想修改函数本身,则按如下方式跟踪:

# test function
fun <- function(x) length(x) 

trace(fun, quote(print(i <<- i + 1)))

i <- 0
out <- sapply(iris, fun)
要扭转这种局面,请使用untracefun

3包装器另一种可能是创建包装器。flush.console是可选的,具有避免控制台缓冲的效果,因此您可以立即看到输出

wrap_fun <- function(x) { print(i <<- i + 1); flush.console(); fun(x) }

i <- 0
out <- sapply(iris, wrap_fun)

另请参见?txtProgressBar和?winProgressBar窗口,以及其他可用进度条的进度包。

亲爱的Grothendieck,非常感谢您的回复。然而,我试着使用你建议的代码,但不起作用。我使用了两个函数nullmodel和computeModules,它们构建在一个R包的二分体中,所以我不能修改它。如果我使用建议的第一个解决方案跟踪,我如何将脚本放入其中?谢谢。您可以跟踪包中的函数。跟踪帮助文件中甚至有一个示例。谢谢。我已经阅读了此帮助,但没有找到解决方案。我再看看。亲爱的格罗森迪克,非常感谢你的回复。然而,我试着使用你建议的代码,但不起作用。我使用了两个函数nullmodel和computeModules,它们构建在一个R包的二分体中,所以我不能修改它。如果我使用建议的第一个解决方案跟踪,我如何将脚本放入其中?谢谢。您可以跟踪包中的函数。跟踪帮助文件中甚至有一个示例。谢谢。我已经阅读了此帮助,但没有找到解决方案。我再看看。
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)