我有一个无效函数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
这对我没有意义。有人可以解释为什么会这样吗?