У меня есть ответ JSON, который кодирует Inf/-Inf/NaN как строки, поэтому возвращаемый им массив JSON будет выглядеть как [1.0, "Infinity", 2.0]
. Я разбираю это, используя библиотеку JSON, и в итоге получим список, который выглядит как list(1.0, "Infinity", 2.0)
, и я хочу преобразовать его в list(1.0, Inf, 2.0)
. По соображениям производительности мне это нужно, чтобы использовать Rcpp. Вот код, который я пытался делать, но я не могу показаться, чтобы получить Rcpp не кричать на меня обПреобразование строковых версий «Бесконечность» в числовое значение в Rcpp
library(Rcpp)
cppFunction('
NumericVector convertThings(List data) {
const size_t num_rows = data.size();
NumericVector rv(num_rows);
for (size_t i = 0; i < num_rows; ++i) {
if (as<String>(data[i]) == "Infinity") {
rv[i] = R_PosInf;
} else {
rv[i] = as<double>(data[i]);
}
}
return rv;
}
')
convertThings(list('Infinity', 1.0))
# expected output c(Inf, 1.0)
Ошибка Я вижу это Error: not compatible with requested type
. Помощь очень ценится!
Именно то, что я искал, большое спасибо Dirk! – sergeygoder