1

当 X 是单数时,以下代码会引发警告。有没有办法让它静音?

“警告:解决():系统似乎很奇异;尝试近似解决方案”

功能:

// [[Rcpp::depends(RcppArmadillo)]]


#include <RcppArmadillo.h>
using namespace Rcpp;

// [[Rcpp::export]]
NumericVector fastLM(const NumericVector & y_, const NumericMatrix&  X_) {
  
  const arma::vec & y = as<arma::vec>(wrap(y_));
  const arma::mat & X = as<arma::mat>(wrap(X_));

  int n = X.n_rows, k = X.n_cols;

  arma::colvec coef = arma::solve(X, y);

  return(
    as<NumericVector>(wrap(coef))
  );
}

谢谢

4

1 回答 1

2

可以使用#define ARMA_DONT_PRINT_ERRORS,但这将停止打印所有功能的所有错误和警告。

更有针对性的方法是使用函数的选项solve()如下所示:

arma::colvec coef;

bool success = arma::solve(coef, X, y, arma::solve_opts::no_approx);

// if success is true coef is valid
// if success is false, coef is invalid

如果您想保留对工作精度来说唯一的解决方案,请添加另一个选项:

bool success = arma::solve(coef, X, y, arma::solve_opts::no_approx + solve_opts::allow_ugly);
于 2020-09-24T15:59:23.210 回答