Как читать вектор как CharacterVector в Rcpp
Как я могу прочитать r
вектор как CharacterVector в Rcpp
У меня есть функция
library(Rcpp)
cppFunction('String readC(CharacterVector x) {
for (int j=0; j < x.size(); j++)
Rcout << x[j] << std::endl;
return "Yes";
}')
В зависимости от ввода он преобразуется в другой тип.
readC(c(TRUE,NA,1, 'Yes'))
$TRUE
$NA
$1
$Yes
readC(c(TRUE,NA,1))
$1
$NA
$1
readC(c(TRUE,NA))
$TRUE
$NA
Как я могу изменить функцию, чтобы ожидаемый результат в вышеуказанных случаях TRUE, NA, 1, Yes
, TRUE, NA, 1
а также TRUE, NA
,
1 ответ
Попробуйте это и поймите, что C(++) напечатан. Итак, имея CharacterVector
аргумент означает... все его компоненты являются символами. Для которого NA
, но TRUE
а также FALSE
конвертируются до того, как вы их получите:
R> cppFunction('String readC(CharacterVector x) {
+ for (int j=0; j < x.size(); j++) print(x[j]);
+ return "Yes";
+ }')
R> readC(c(NA, Inf, -Inf, NaN, TRUE, FALSE, 42))
<CHARSXP: NA>
<CHARSXP: "Inf">
<CHARSXP: "-Inf">
<CHARSXP: "NaN">
<CHARSXP: "1">
<CHARSXP: "0">
<CHARSXP: "42">
[1] "Yes"
R>