2014-10-20 5 views
0

Теперь я использую rcppbugs для оптимизации параметров экосистемной модели. Ситуация заключается в том, что мои наблюдаемые данные представляют собой очень длинные временные ряды, и для этого требуется не менее 10 000 итераций. Поскольку run.model() выводит расчетные значения (здесь y.hat) в каждый момент времени, это вызывает большие проблемы, например:R rcppbugs: как отключить вывод оценочных значений

List of 6 
$ factor1 : num [1:2] 0.921 0.921 
$ factor2 : num [1:2] 2 2 
$ factor3 : num [1:2] 0.954 0.954 
$ tau.y : num [1:2] 0.17 0.17 
$ y.hat : num [1:2, 1:70176] 0.139 0.139 0.138 0.138 0.136 ... 
$ y.lik : NULL 
- attr(*, "acceptance.ratio")= num 0 

Очевидно, что трудно сохранить y.hat каждый раз, но пока мне нужно запишите все значения factor1, factor2 и factor3. Может ли кто-нибудь помочь? Благодарю.

+0

Я не вижу никаких выражений 'message',' print' или 'cat', что означает, что печатает код на C++. Пробовали ли вы 'capture.output()' для подавления вывода? –

+0

Спасибо, Роман. Он работает в R, но все же y.hat будет выводиться в коде C++. Интересно, будет ли это иметь какое-либо влияние. Моя память составляет 4 ГБ, поэтому, если я повторю эту модель на 10 000 раз, произойдет сбой кода на C++? Я пытаюсь пересмотреть исходный код на C++, но это занимает довольно много времени. – user2597889

+0

'capture.output' будет только« подавлять »печать. Все вычисления все еще выполняются и возвращаются к переменной, которую вы используете для сохранения результата. Я не знаком с этим проектом, и я не могу сказать о том, как будет выглядеть код на C++. –

ответ

0

Переменная y.hat выводится функцией getHistory() в исходном коде rcppbugs C++. Таким образом, достаточно изменить эту функцию для решения вышеуказанной проблемы.

0

Если печать осуществляется через R's message или warning, вы можете использовать suppressMessages и suppressWarnings, соответственно. Если вывод производится с использованием cat, print или отправляется на «std out» из функции C/C++/Fortran, вы можете использовать capture.output.

Смежные вопросы