私は単純なRcppコードの例を書こうとしています。これは、Rcpp
パッケージとinline
パッケージでは非常に簡単です。Rcpp :: CharacterVector要素の等価性をテストするには?
しかし、私はどのように平等のための2つの文字要素があるかどうかをテストするのが面倒です。次の例では、2つの文字ベクトルの最初の要素を比較します。しかし、私はそれをコンパイルすることはできません。
トリックとは何ですか?
library(Rcpp)
library(inline)
cCode <- '
Rcpp::CharacterVector cx(x);
Rcpp::CharacterVector cy(y);
Rcpp::LogicalVector r(1);
r[0] = (cx[0] == cy[0]);
return(r);
'
cCharCompare <- cxxfunction(signature(x="character", y="character"),
plugin="Rcpp", body=cCode)
cCharCompare("a", "b")
-
二つの要素の一つが一定であれば==
を使用して比較が完全に正常に動作します。次のコードは、期待される結果をコンパイルしています:
cCode <- '
Rcpp::CharacterVector cx(x);
Rcpp::LogicalVector r(1);
r[0] = (cx[0] == "a");
return(r);
'
cCharCompareA <- cxxfunction(signature(x="character"), plugin="Rcpp", body=cCode)
cCharCompareA("a")
[1] TRUE
cCharCompareA("b")
[1] FALSE
実装は
string_proxy
クラスで次のようになります'定義されている? – Jamescxxfunctionで設定する前に、なぜNULLに設定するのですか? – Spacedman
@James Apologies - 'cx [0] == cy [0]' - 編集したはずです。 – Andrie