Как перевести TRUE в Rcpp - PullRequest
       7

Как перевести TRUE в Rcpp

0 голосов
/ 05 июня 2019

Можно ли перевести функцию R isTRUE в Rcpp?И если да, то как?

Функция R:

function (x) 
is.logical(x) && length(x) == 1L && !is.na(x) && x

Я борюсь с первой и третьей частью.Как я могу проверить, имеет ли тип ввода логический или логический тип?И как я могу проверить NA, когда тип ввода неизвестен?

Я знаю, что могу проверить, равна ли длина 1 с помощью

x.length()  == 1  /  x.size() == 1

1 Ответ

4 голосов
/ 05 июня 2019

Это уже реализовано в этом заголовочном файле как

template <bool NA, typename T>
inline bool is_true( const Rcpp::sugar::SingleLogicalResult<NA,T>& x){
    return const_cast< Rcpp::sugar::SingleLogicalResult<NA,T>& >(x).is_true() ;
}

Это, конечно, относится к другому файлу ... и все шаблоны мета-программирования не для слабонервных. Вы также можете сделать то, что вы набросали, см. это сообщение галереи Rcpp о динамической диспетчеризации, чтобы увидеть пример тестирования для типов во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...