我的代码包含一个运行必不可少的命令,但最终会在控制台中显示此命令的结果,我尝试使用suppressWarnings()
,suppressMessages()
,{{1 }和invisible()
但所有这些仍然显示结果。
以下是一个示例数据集,问题源自:
sink()
上面代码的最后一行始终显示控制台中的摘要,当报告导致问题自动执行此操作时。有没有人知道可以阻止这种情况发生的命令?
三江源
我已经找到了一种在自动化报告时隐藏它的方法,但如果有人知道如何隐藏它而只是运行代码以使流程更快,那么无论如何这将是非常有用的:)
答案 0 :(得分:6)
ets
对象的摘要方法有点冗长:
> forecast:::summary.ets
function (object, ...)
{
print(object)
cat("\nTraining set error measures:\n")
print(accuracy(object))
}
<bytecode: 0x161d31c8>
<environment: namespace:forecast>
这是非常糟糕的样式,汇总方法应该返回一个带有类的对象,该类的print方法应该产生输出。
所以你可以在对象上调用accuracy
方法:
> accuracy(fstAdi)[,"MAE"]
[1] 1971.468
具有不需要任何输出转移的优点,并且更具可读性。
答案 1 :(得分:4)
sink
确实有效,你究竟是如何使用它的?试试例子
M<-c(1111,1222,1333,1444,1555,1666,1777,2223,6654,9867,1123,1456,2436,6875)
fstAdi <- ets(ts(rep(M,length = length(M)), deltat= 1/4, start = c(8,1)), model = "AAA", damped = FALSE, opt.crit = "mae", ic="aic", lower = c(0, 0, 0, 0), upper = c(0.999, 0.999, 0.999, 0.999), bounds = "admissible", restrict = FALSE)
sink(tempfile())
mae11Ad<-summary(fstAdi)[,"MAE"]
sink()
答案 2 :(得分:2)
我知道这可能看起来像是一种糟糕的方式,但这似乎有效
sink( tempfile() )
mae11Ad<-summary(fstAdi)[,"MAE"]