这是Rcpp的奇怪行为吗?

时间:2018-02-07 11:32:29

标签: r rcpp

我有一个无效函数x2y,可以通过地址将x更新为y

Rcpp代码就像这样

#include <RcppArmadillo.h>
#include <iostream>

//[[Rcpp::export]]
void x2y(const Rcpp::NumericVector& x,
         Rcpp::NumericVector& y)
{
  y = 1.0 / (1.0 + Rcpp::exp(-x));

  std::cout << "output(0)= " << y(0) << std::endl;
}

如果使用y初始化NA,则不会更新:

x <- c(-1, 0, 2)

y <- c(NA, NA, NA)
x2y(x, y)
print(y)
[1] NA NA NA

但是如果

y <- c(NaN, NaN, NaN)
x2y(x, y)
print(y)
[1] 0.2689414 0.5000000 0.8807971

或如果

y <- c(-99, -99, -99)
x2y(x, y)
print(y)
[1] 0.2689414 0.5000000 0.8807971

这对我没有意义。有人可以解释为什么会这样吗?

0 个答案:

没有答案