Как проверить элементы Rcpp :: CharacterVector на равенство?

Я пытаюсь написать несколько простых примеров кода Rcpp. Это замечательно легко сделать с помощью встроенных пакетов Rcpp и .

Но я не понимаю, как проверить равенство двух символьных элементов. В следующем примере сравниваются первые элементы двух символьных векторов. Но я не могу его скомпилировать.

В чем заключается фокус?

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
14
задан Andrie 24 October 2011 в 12:50
поделиться