有没有办法在 RcppArmadillo `arma::solve` 中静音警告?
Is there a way to mute warning in RcppArmadillo `arma::solve`?
当 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))
);
}
谢谢
可以使用 #define ARMA_DONT_PRINT_ERRORS
,但这将停止打印所有函数的所有错误和警告。
更有针对性的方法是对 solve()
函数使用 options,如下所示:
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);
当 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))
);
}
谢谢
可以使用 #define ARMA_DONT_PRINT_ERRORS
,但这将停止打印所有函数的所有错误和警告。
更有针对性的方法是对 solve()
函数使用 options,如下所示:
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);