Как сделать предупреждения явными при преобразовании строки в логическую, создает NA - PullRequest
0 голосов
/ 05 июля 2018

Я пишу функцию, которая ловит ошибки преобразования, когда значение приводится к NA. Похоже, что базовые функции преобразования несовместимы при возврате предупреждений.

> as.numeric("a")
[1] NA
Warning message:
NAs introduced by coercion 

Однако при преобразовании в логическое предупреждение не отображается:

> as.logical("a")
[1] NA

Мой вопрос : Есть ли способ сделать предупреждение явным, если строка не может быть преобразована в логическую?

Я посмотрел на rlang::as_logical(), но вместо предупреждения выдает ошибку, которую я хотел бы избежать, если это возможно.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете сделать свою собственную функцию об этом:

as.logical2 <- function(x) {

  if (is.na(x)) return(x)
  out <- as.logical(x)
  #if there is an NA, you can issue a warning
  if (is.na(out)) warning('NAs introduced by coercion')
  out

}

as.logical2('a')
#[1] NA
#Warning message:
#In as.logical2("a") : NAs introduced by coercion
0 голосов
/ 05 июля 2018

Вы можете использовать options(warn =. Например:

options(warn=1, error=NULL)

чтобы получить предупреждение.

Обычно я справляюсь с этим, выдавая предупреждения об ошибках для соответствующей части кода.

Например:

options(warn=2, error=NULL)
as.logical(x)

Ошибка: (список) объект не может быть приведен к типу «логический»

Вы также можете легко сбросить его, как это options(warn=0, error=NULL)

Связанный: Разрыв цикла, когда в R

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