【发布时间】:2021-01-06 15:18:32
【问题描述】:
我有一个需要很长时间才能运行的函数(涉及大型数据集中的许多计算)。我想包括一个进度条,看看它是否正在取得进展。我的函数没有 for 循环;如果函数中没有 for 循环,我不明白如何添加进度条。
我尝试添加一个 for 循环来让进度条工作,但它只是打印进度条而不进行计算(我相信),即当我打印 result 时,我得到 NULL:
install.packages("svMisc")
require("svMisc")
# Test function
funct<-function(a,b,c)for (i in 0:101){
progress(i, progress.bar=TRUE)
Sys.sleep(0.01)
x<-a*a
y<-x+b
z<-y/2
if (i == 101) message("Done!")
}
result <- funct(-2.6e+70,-2.5e+121,6)
result
请随意提出svMisc以外的建议。
【问题讨论】:
-
您的示例正在在函数中进行计算,只是不返回它。要么将
z <-y/2移动到函数的最后一行,要么在 if 语句后添加显式return(z) -
以上建议的任何更改都需要额外的大括号
-
@Miff,请发表您的评论作为答案?