11
如何在Rcpp中調整大小?如何調整NumericVector的大小?
當我使用這個push_back
功能,計劃減慢。但是沒有.resize()
或.reserve()
函數。 (當我已經與所需的大小NumericVector
,我可以使用拷貝構造函數來獲取NumericVector
的正確的大小。這是比push_back
使用快得多這種情況下)
如何在Rcpp中調整大小?如何調整NumericVector的大小?
當我使用這個push_back
功能,計劃減慢。但是沒有.resize()
或.reserve()
函數。 (當我已經與所需的大小NumericVector
,我可以使用拷貝構造函數來獲取NumericVector
的正確的大小。這是比push_back
使用快得多這種情況下)
如果你喜歡C++習慣用法,使用std::vector<double>
並將其返回到它將通過隱含的wrap()
轉換爲R向量的那一端。您也可以通過RcppArmadillo和RcppEigen使用Armadillo或Eigen載體。
我們的對象是圍繞R對象的淺包裝,所以push_back
總是需要一個完整的副本。這是已知的和記錄。
編輯:所以對於完整,這裏是用RcppArmadillo一個例子:
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
// [[Rcpp::export]]
arma::vec shrink(arma::vec x) {
arma::vec y = x;
y.resize(y.size()-2);
return y;
}
,我們可以通過
R> Rcpp::sourceCpp('/tmp/vec.cpp')
R> shrink(1:10)
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
R>
正如德克解釋的部署,很少有機會,我們將有一個'預留'方法。我們可能會實施「調整大小」。 –