gpt4 book ai didi

r - 如何调整 NumericVector 的大小?

转载 作者:行者123 更新时间:2023-12-04 00:44:52 26 4
gpt4 key购买 nike

如何在 Rcpp 中调整大小 NumericVector ?

当我使用 push_back为此,程序会变慢。但是没有.resize().reserve()职能。
(当我已经有一个具有所需大小的 NumericVector 时,我可以使用复制构造函数来获取 NumericVector 的正确大小。在这种情况下,这比使用 push_back 快得多)

最佳答案

如果您更喜欢 C++ 习惯用法,请使用 std::vector<double>并在最后返回它将通过隐式 wrap() 转换的位置到 R 向量。您还可以通过 RcppArmadillo 和 RcppEigen 使用 Armadillo 或 Eigen 向量。

我们的对象是围绕 R 对象的浅包装,所以 push_back比如说,一个 Rcp::NumericVector总是需要一个完整的副本。这是众所周知的并记录在案。

编辑:所以为了完整性,这里是一个使用 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>

关于r - 如何调整 NumericVector 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com