【发布时间】:2021-02-23 14:40:56
【问题描述】:
考虑这个 R 函数:
r_abs <- function(x,y,z){
2 * abs((x >= y) - z)
}
还有那 2 个 RcppArmadillo 等价物:
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::depends(RcppProgress)]]
#include <RcppArmadillo.h>
#include <string>
#include <progress.hpp>
using namespace arma;
// [[Rcpp::export]]
double arma_abs(const double &x, const double &y, const double &z)
{
return 2 * abs((x >= y) - z);
}
// [[Rcpp::export]]
double std_abs(const double &x, const double &y, const double &z)
{
return 2 * std::abs((x >= y) - z);
}
现在问题来了:
sourceCpp(".test/test.cpp")
x <- 1
y <- 2
z <- 0.5
r_abs(x,y,z)
[1] 1
arma_abs(x, y, z)
[1] 0
std_abs(x, y, z)
[1] 1
为什么 arma_abs() 在这里输出 0?该问题仅出现在-1 < z < 1。
非常感谢您提供的任何帮助。
【问题讨论】:
标签: c++ r rcpp armadillo rcpparmadillo