我正在尝试编写一些简单的 Rcpp 代码示例。Rcpp
使用andinline
包,这非常容易。
但是我对如何测试两个字符元素是否相等感到困惑。下面的示例比较两个字符向量的第一个元素。但我无法编译它。
诀窍是什么?
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