2012-02-03 3 views
0

Я делаю тест на пакет Rcpp, и он отлично работает.Rcpp: CharacterVector size

У меня есть небольшая проблема при передаче некоторого CharacterVector от R до C++.

RcppExport SEXP testArray(SEXP Rarr){ 

     Rcpp::CharacterVector cx(Rarr); 
     Rcpp::LogicalVector r(1); 
     std::string test = "a"; 
     r[0] = (*(const char*)cx[0] == *(const char*)test.c_str()); 
     const char * temp = (const char*)cx; 


     return Rcpp::wrap(temp.size()); 

    } 

возможно получить размер «Rcpp :: CharacterVector сх», основанный на коде выше?

что-то вроде: cx.size() или длина (сх)?

С уважением,

Энди

+0

Я нашел его в другом потоке Rcpp. 'return Rcpp :: wrap (cx.size());' – Andy

+1

, вы должны принять ответ, поскольку это ответ на ваш вопрос. Для этого нажмите на галочку. –

ответ

5

Да, .size() это:

R> library(inline) 
R> 
R> vecsize <- cxxfunction(signature(x="character"), plugin="Rcpp", body=' 
+ Rcpp::CharacterVector cx = Rcpp::CharacterVector(x); 
+ return Rcpp::wrap(cx.size()); 
+ ') 
R> vecsize(c("a", "b", "c")) 
[1] 3 
R> 
Смежные вопросы