【发布时间】:2014-02-21 01:30:55
【问题描述】:
所以我在 R 中使用了一个使用编译的 fortran 代码的函数。使用此功能时,lsoda,在包deSolve 中。我将消息打印到屏幕上,例如
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 循环中断,然后外部 for 循环进入下一次迭代。通常你会使用 tryCatch 来做这样的事情,但是因为没有错误,我不知道该怎么做
【问题讨论】:
-
您可以重定向输出,然后检查它是否包含类似的内容。请提供可重现的示例
-
@JulianUrbano 嗯,不知道你的意思是什么,我想知道的原因是如果这个消息被打印出来,我想要一个内部 while 循环中断,然后是外部 while 循环进入下一个迭代。通常你会使用 tryCatch 来做这样的事情,但因为没有错误,我不知道该怎么做
-
请给我们一个可重现的例子,以便我们向您展示如何重定向
-
也许您可以使用“capture.output”并匹配您正在寻找的消息
-
@JuliánUrbano 我的例子又长又丑又慢,我想不出一个包含问题本质的玩具问题。也许如果你包含一个指向你所说的重定向的链接,谷歌搜索“R 中的重定向”并没有产生我认为你所建议的内容。
标签: r