Я пытаюсь написать несколько простых примеров кода Rcpp. Это замечательно легко с пакетами Rcpp
и inline
.
Но я в тупике о том, как проверить, являются ли два символьных элемента для равенства. В следующем примере сравниваются первые элементы двух символьных векторов. Но я не могу его скомпилировать.
Каков трюк?
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