2014-10-20 24 views
0

我现在使用rcppbugs来优化生态系统模型的参数。情况是,我观察到的数据是一个很长的时间序列,它至少需要10,000次迭代。由于run.model()在每次输出的估计值(这里y.hat),这将导致一个很大的问题,如:R rppppugs:如何禁用估计值的输出

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()'来抑制输出? – 2014-10-20 07:48:47

+0

谢谢罗马。它在R中工作,但仍然会用C++代码输出。我想知道这是否会有任何影响。我的内存是4 GB,所以如果我迭代10000次模型,C++代码会崩溃吗?我正在修改C++源代码,但它花费了相当多的时间。 – user2597889 2014-10-20 08:21:23

+0

'capture.output'只会“禁止”打印。所有计算仍在完成并返回到您用来保存结果的变量。我对这个项目并不熟悉,也不知道C++代码的行为。 – 2014-10-20 09:38:25

回答

0

y.hat变量是由rcppbugs C++源代码中的getHistory()函数输出的。因此,修改此功能足以解决上述问题。

0

如果通过R的messagewarning进行打印,则可以分别使用suppressMessagessuppressWarnings。如果输出使用cat,print生成,或者从C/C++/Fortran函数发送到“标准输出”,则可以使用capture.output