2014-10-20 56 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