抑制 R 中的进度条

7

eHOF包中的HOF函数自动生成进度条,该函数没有参数来关闭进度条。

除了该函数以外,有没有其他方法可以抑制进度条的生成?(我需要多次应用该函数,目前进度条的唯一作用就是淹没我的屏幕。)


1
似乎可以使用utils::txtProgressBar(),它会写入stdout,因此您可以使用capture.output()将整个调用包装起来以抑制它。 invisible()用于掩盖print()输出,在这种情况下不起作用。您还应该考虑给pkg作者发送电子邮件,并将其作为可切换选项。我本来想尝试将其PR到pkg中,但似乎它不在github(等)上。 - hrbrmstr
您还可以使用sink函数将所有输出临时重定向。 - Eric Lecoutre
谢谢大家。正如@hrbrmstr所指出的那样,invisible()不起作用。capture.output()技术确实有效,但返回一个字符矩阵,与包的后续Para()函数不兼容。虽然我可以解析矩阵并将其重新格式化为HOF类对象,但相对于忍受进度条来说,这似乎是太多的工作了。所以我放弃了这个愚蠢的梦想。再次感谢。 - Andy
1
@andy 你试过 capture.output(var_name <- function_call(params)) 吗? - hrbrmstr
1个回答

13

根据 @hrbrmstr 建议。

# Load the library
library("eHOF")

# Generate a fake dataset
FakeData<-sample(c(0,1),250,replace=TRUE)
TestMatrix<-matrix(FakeData,nrow=50,ncol=5)

# Apply the HOF function to each column of the matrix, and suppress progbar
# Use invisible to prevent capture.output from printing the progbar
invisible(capture.output(Models<-apply(TestMatrix,2,HOF,1:50)))

# Apply the Para function to extract the model parameters
DesiredOutcome<-sapply(Models,Para)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接