#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);
}