在不使用sink()的情况下抑制print()

时间:2014-03-26 16:50:35

标签: r

我学习如何检测时间序列中的异常,并使用detectAO package中的detectIOTSA函数。我在循环中使用它们,但不会抑制它们的输出。据我所知,当你在循环或函数中使用某些函数时,它们的输出会被抑制,直到你使用print()函数。所以我检查了这些函数的源代码,作者使用了print()。有没有方法可以在不使用sink('/dev/null')的情况下抑制此输出?

require(TSA)

detected<-numeric(1000)

for(i in 1:10){

  data<-rcauchy(1000)
  model<-auto.arima(data)

  #I don't want this to be printed
  detected<-detectAO(model)$ind

  #Only this
  print(detected)
}

1 个答案:

答案 0 :(得分:1)

require(forecast) ## for auto.arima?                                                                                                                                                                                                          

for(i in 1:10){

  data <- rcauchy(1000)
  model <- auto.arima(data)

  ##I don't want this to be printed                                                                                                                                                                                                           
  capture.output(detected <- detectAO(model)$ind)

  ##Only this                                                                                                                                                                                                                                 
  print(detected)

}