gpt4 book ai didi

rcpp - 如何对元素2到101的Rcpp NumericVector切片?

转载 作者:行者123 更新时间:2023-12-01 07:34:05 24 4
gpt4 key购买 nike

嗨,我正在尝试将Rcpp的NumericVector切片为元素2到101

在R中,我会这样做:

array[2:101]

如何在RCpp中做同样的事情?

我尝试在这里看: http://gallery.rcpp.org/articles/subsetting/
但是该资源有一个使用IntegerVector::create()列出所有元素的示例。但是,:: create()受元素数量限制。 (除了乏味)。有没有办法对给定2个索引的向量进行切片?

最佳答案

使用Rcpp的Range函数可以做到这一点。这将生成等效的C++位置索引序列。例如

Rcpp::Range(0, 3)

会给:
0 1 2 3

注意:C++索引从0开始而不是1!

例子:
#include <Rcpp.h>

// [[Rcpp::export]]
Rcpp::NumericVector subset_range(Rcpp::NumericVector x,
int start = 1, int end = 100) {

// Use the Range function to create a positional index sequence
return x[Rcpp::Range(start, end)];
}

/***R
x = rnorm(101)

# Note: C++ indices start at 0 not 1!
all.equal(x[2:101], subset_range(x, 1, 100))
*/

关于rcpp - 如何对元素2到101的Rcpp NumericVector切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47246200/

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