我是R语言领域的新手,但我需要在我的C++代码中使用RInside库通过irlba计算奇异值分解。为此,我使用RInside库。
RInside R(argc, argv);
std::string cmd = "S<-diag(3)";
R.parseEval(cmd);
R.parseEval("B<-svd(S,nu=dim(S)[1],nv=dim(S)[2])");
Rcpp::List V ((SEXP)R.parseEval("B$v"));
现在我需要将从带有奇异向量的Rcpp :: List中的结果转换为std :: vector
问题: 将执行svd的结果转换为std :: vector的最佳方法是什么?
如何将以std :: vector编写的输入矩阵转换为适合用作irlba中svd函数的输入参数的格式?
Rcpp::as< std::vector<double> >(V)
,我相信。但是为什么要将B$v
的结果存储在Rcpp::List
中呢?难道它本身不是一个NumericMatrix
(NumericVector
) 吗? - Kevin Ushey