如果值是数字且有限,我该如何检查?假设我使用Rf_rgamma或我自己的例程生成随机数。根据参数,可能会生成错误。如何在C中检查并在该事件中打破循环和整个函数?
我怎样才能检查一个向量,比如一个来自RcppArmadillo的arma :: vec,是否只包含数值和有限值?
我知道,这些是一般性问题。但是,我的具体问题需要几分钟才能复制,我无法创建一个最小的例子。大多数情况下,我的功能正常,只有1到100,000次,导致R崩溃。
答案 0 :(得分: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>