나는 R 언어의 분야에서 신참이다. 그러나 C++ 코드에서 irlba를 통해 단일 값 분해를 계산해야한다. 이 목적을 위해 저는 RInside lib를 사용합니다.변환하는 방법 Rcpp :: List to 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에서 내 결과를 변환 할 필요가 :: 단일 벡터와 목록 성병 : 벡터
질문 : 이 표준에 SVD 수행 결과를 변환하는 가장 좋은 방법은 무엇입니까 :: 벡터?
irlba에서 svd 함수의 입력 매개 변수로 사용하기 위해 std :: vector로 작성된 입력 행렬을 변환하는 방법은 무엇입니까?
당신은'Rcpp :: as> (V)'를 원한다고 나는 믿는다. 하지만 왜'B $ v'의 결과를'Rcpp :: List'에 저장하고 있습니까? 그 자체가'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 행렬임을 명시 적으로 지정할 수 있습니까? –