Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我如何检查一个值是否是数字和有限的?假设我使用 Rf_rgamma 或我自己的例程生成随机数。根据参数,可能会产生错误。如何在 C 中检查并在该事件中中断循环和整个函数?
我如何检查一个向量,比如说来自 RcppArmadillo 的 arma::vec,是否只包含数字和有限值?
我知道,这些都是一般性问题。但是,我的具体问题需要几分钟才能重现,而且我无法创建一个最小的示例。大多数时候,我的函数运行良好,只有 100.000 次中的 1 次会导致 R 崩溃。
这是一种方法:检查每个元素。一个简单的演示:
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>