2017-11-12 3 views
0

안녕하세요 R 101요소 2 ~ 101에 대해 Rcpp NumericVector를 분할하는 방법?

에 요소 2 Rcpp의 NumericVector 슬라이스를 시도하고, 내가 이런 짓을 했을까 :

array[2:101] 

을 내가 RCpp에서 동일한 작업을 수행합니까?

여기를 보려고했는데 : http://gallery.rcpp.org/articles/subsetting/ 하지만 리소스에는 IntegerVector :: create()를 사용하여 모든 요소를 ​​나열하는 예제가 있습니다. 그러나 :: create()는 요소의 수에 의해 제한됩니다. (지루하고). 2 개의 인덱스가 주어진 벡터를 슬라이스하는 방법은 없습니까?

답변

2

RcppRange 기능으로 가능합니다. 이렇게하면 동일한 색인 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)) 
*/ 
+0

정말 고마워요! – Alexander