问题描述
我需要从犰狳到Rcpp进行qr分解。确实会运行以下R代码(带有经济QR):
# test matrix:
m<-5; n<-4
set.seed(123)
X <- replicate(n,runif(m))
sourceCpp(code='
#include <iostream>
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
//[[Rcpp::export]]
List QRdec_econ(arma::mat X) {
int n = X.n_cols;
int m = X.n_rows;
arma::mat Q(m,n);
Q.fill(0);
arma::mat R(n,n);
R.fill(0);
arma::qr_econ(Q,R,X);
return List::create(_["Q"] = Q,_["R"] = R
);
}'
)
QRdec_econ(as.matrix(X))
相反,以下代码(非常相似,仅使用qr而不是qr_econ)在编译时失败:
sourceCpp(code='
#include <iostream>
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
//[[Rcpp::export]]
List CPHHQR_arma(arma::mat X) {
int n = X.n_cols;
int m = X.n_rows;
arma::mat Q(m,m);
Q.fill(0);
arma::mat R(m,n);
R.fill(0);
arma::umat P(n,n);
P.fill(0);
arma::qr(Q,P,X,"matrix");
return List::create(_["Q"] = Q,_["R"] = R,_["P"] = P
);
}'
)
对于这种奇怪的代码行为,请提出任何建议吗?预先非常感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)