一个简单的RcppArmadillo指数问题

时间:2015-04-15 01:24:58

标签: r rcpp armadillo

我使用RcppArmadillo进行编码并遇到了一个非常基本的问题。假设我有一个向量" v",我想采用它的前10个元素,就像在R:v[1:10]中一样。由于1:10RcppArmadillo中无效,我尝试了v.elem(seq_len(10)),但它没有效果。任何提示?

1 个答案:

答案 0 :(得分:2)

假设您正在使用arma::vec,这应该可行:

#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
arma::vec f(const arma::vec & v, int first, int last) {
    arma::vec out = v.subvec(first, last);
    return out;
}

/*** R
f(11:20, 3, 6)
*/

请注意,这使用从零开始的索引(11是向量的第0个元素)。根据需要强制NumericVector

当源代码进入R时,代码被编译,链接,加载并执行嵌入式示例:

R> sourceCpp("/tmp/armaEx.cpp")

R> f(11:20, 3, 6)
     [,1]
[1,]   14
[2,]   15
[3,]   16
[4,]   17
R> 

所以这一切都是_只需要调用subvec()。有关更多信息,请参阅Armadillo文档。