исследовать элементы категориального вектора в rcpp

#r #rcpp

#r #rcpp

Вопрос:

мой вопрос тривиален, но я новичок в RCPP и до сих пор не освоился. Я хотел создать функцию, которая, учитывая категориальный вектор и два целых числа, возвращает подмножество векторного содержимого между двумя целыми числами. Вы знаете, [«A», «B», «C», «D] и 1 и 2, возвращает мне [«B», «C»]. Я выполнил следующий код, но он не работает.

 // [[Rcpp::export]]
Rcpp::StringVector Segment(Rcpp::StringVector x, int start, int end) {
  Rcpp::StringVector s(end-start 1);
  for(int i=start; i <= end; i  ){
    s[i]=x[i];
    }
  return(s);
}
  

Комментарии:

1. Rcpp не имеет выделенного типа для Factor или Ordered. Вы можете работать только с вектором уровней. Что наводило бы на мысль о целочисленном векторе.

Ответ №1:

Попробуйте использовать CharacterVector . Решение может быть таким.

 // [[Rcpp::export]]
CharacterVector Segment( CharacterVector x, int start, int end){
  CharacterVector r(end-start 1);
  int ind=0;
  for( int i=0; i<=r.size(); i  ){
    if((i>=start) amp; (i<=end)){
      r[ind]=x[i];
      ind =1;
    }
  }
  return(r);
}