2

我如何检查一个值是否是数字和有限的?假设我使用 Rf_rgamma 或我自己的例程生成随机数。根据参数,可能会产生错误。如何在 C 中检查并在该事件中中断循环和整个函数?

我如何检查一个向量,比如说来自 RcppArmadillo 的 arma::vec,是否只包含数字和有限值?

我知道,这些都是一般性问题。但是,我的具体问题需要几分钟才能重现,而且我无法创建一个最小的示例。大多数时候,我的函数运行良好,只有 100.000 次中的 1 次会导致 R 崩溃。

4

1 回答 1

3

这是一种方法:检查每个元素。一个简单的演示:

R> cppFunction('int checker(double x) { return ::R_finite(x);} ')
R> checker(2)
[1] 1
R> checker(0)
[1] 1
R> checker(NaN)
[1] 0
R> checker(Inf)
[1] 0
R> 
于 2013-05-28T21:58:19.937 回答