5
我是R語言領域的新手,但我需要在我的C++代碼中通過irlba計算奇異值分解。爲此我使用RInside lib。如何將Rcpp :: List轉換爲std :: vector <double>
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轉換::與奇異向量列表爲std :: vector的
問題: 是什麼的進行奇異值分解到STD結果轉換的最佳方式::向量?
如何將我的輸入矩陣寫爲std :: vector爲適合將它用作irlba中svd函數的輸入參數的格式?
你想'Rcpp :: as>(V)',我相信。但是,爲什麼你在'Rcpp :: List'中存儲'B $ v'的結果 - 本身不是'NumericMatrix'('NumericVector')? –
非常感謝,它確實有效。但我仍然不知道如何將std :: vector轉換爲「R語言的矩陣類型」。我的意思是,當我使用 std :: vector x(9,0.f); x [0] = 1; x [4] = 1; x [8] = 1; R [「S」] = Rcpp :: wrap(x); R.parseEval(「B <-svd(S,nu = 3,nv = 3)」); 它將S變量解釋爲矢量而不是方形矩陣,並對矢量執行svd。我如何明確指定它是一個3 * 3矩陣? –