所以我在R中使用了編譯好的Fortran代碼。使用此功能時,lsoda
,包deSolve
。我得到的消息打印到屏幕上像如果(打印出的東西)x = false,如何在R中執行此操作?
DLSODA- At current T (=R1), MXSTEP (=I1) steps
taken on this call before reaching TOUT
In above message, I =
[1] 5000
In above message, R =
[1] 21.31629
問題是,上述不是「警告」或「錯誤」;看到此消息後,is.null(warnings())
的計算結果爲TRUE。如果這是一個警告,我可以寫x = is.null(warnings())
,那就可以了。我可以使用tryCatch來查找錯誤,但是那些既不是錯誤也不是警告的消息呢?
我問這個問題的原因是這個函數在for循環中的while循環中被調用。如果打印此消息,我希望while循環中斷,然後讓外循環移到下一次迭代。通常你會使用tryCatch做這樣的事情,但因爲沒有錯誤,我不知道如何做到這一點
您可以重定向輸出,然後檢查它是否包含類似的東西。請提供可重複的示例 –
@JulianUrbano嗯,不知道你是什麼意思,我想知道這是因爲我想要一個內部while循環打破,如果此消息被打印,然後爲外部while循環移動到下一次迭代。通常你會使用tryCatch做這樣的事情,但因爲沒有錯誤,我不知道如何做到這一點 – MHH
請給我們一個可重複的例子,所以我們可以告訴你如何重定向 –