2014-10-06 9 views
2

Мой код содержит команду, которая необходима для того, чтобы бежать, однако в конечном итоге показывает результат этой команды в консоли, я пытался использовать suppressWarnings(), suppressMessages(), invisible() и 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) 
mae11Ad<-summary(fstAdi)[,"MAE"] 

Последняя строка кода выше всегда показывает сводку в консоли, которая при автоматизации этого для отчета вызывает проблемы. Кто-нибудь знает о команде, которая может остановить это?

Thankyou

Я нашел способ, чтобы скрыть это автоматизируя отчет, но если кто-нибудь знает, как это скрыть, а просто запустить код, чтобы сделать процесс быстрее, то это было бы очень полезно в любом случае :)

+0

Какой пакет имеет 'ets'? – Spacedman

+1

от tseries или прогноз, я верю, извините, я забыл об этой части кода –

ответ

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() 
+1

Спасибо, что делает работу :) Я буду помнить, что для будущего использования! :) –

2

Я знаю, что, вероятно, выглядит как подход плохой стиль, но это, кажется, работает

sink(tempfile()) 
mae11Ad<-summary(fstAdi)[,"MAE"] 
6

Метод резюме для ets объектов немного многословен:

> forecast:::summary.ets 
function (object, ...) 
{ 
    print(object) 
    cat("\nTraining set error measures:\n") 
    print(accuracy(object)) 
} 
<bytecode: 0x161d31c8> 
<environment: namespace:forecast> 

Это довольно плохой стиль, итоговые методы должны возвращать объект с классом, и метод печати для этого класса должен выдавать результат.

Таким образом, вы можете просто вызвать метод accuracy вашего объекта:

> accuracy(fstAdi)[,"MAE"] 
[1] 1971.468 

, который имеет то преимущество, не нуждаясь утечки продукции и является более удобным для чтения.

+1

Thankyou, я использовал код пользователя elses, поэтому я не просмотрел все мелкие детали. Спасибо, я сейчас применим ваш ответ на код :) –