2

我一直在对 Rcpp 包进行一些测试,效果很好。

将一些 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”的大小?

类似:cx.size()length(cx)

问候,

安迪

4

1 回答 1

7

是的,.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> 
于 2012-02-03T05:16:12.163 回答