在使用.Call编译代码的R包中,宏R_FINITE可以用来检查double是否接受特殊值。R_NegInf和R_PosInf可用于将其设置为负或正无限值。但是我们怎样才能检验一个double值等于负无穷大值还是正无穷大值呢?例如,当实现一个概率分布函数时,这是有用的,该函数应该在无穷大值处取0和1的值。
.Call
R_FINITE
double
R_NegInf
R_PosInf
hs1ihplo1#
R(和C)在这里已经涵盖了,你可以简单地比较平等:
> Rcpp::cppFunction("bool isPosInf(double x) { return x == R_PosInf; }") > sapply(c(-Inf, Inf, 0), isPosInf) [1] FALSE TRUE FALSE > > Rcpp::cppFunction("bool isNegInf(double x) { return x == R_NegInf; }") > sapply(c(-Inf, Inf, 0), isNegInf) [1] TRUE FALSE FALSE >
请注意,虽然为了方便起见我使用了Rcpp,但这里没有任何特定于Rcpp的内容,因为比较的两个符号来自R报头。
Rcpp
1条答案
按热度按时间hs1ihplo1#
R(和C)在这里已经涵盖了,你可以简单地比较平等:
请注意,虽然为了方便起见我使用了
Rcpp
,但这里没有任何特定于Rcpp
的内容,因为比较的两个符号来自R报头。