Я хочу упростить небольшой текстовый код. Аргументы по умолчанию для программы - символ 0 длины, когда эта функция не должна использоваться Меня интересует нечто более простое, чем
if (nchar(expr) > 0) ...
Поэтому я создал следующее
as.logical <- function(x, ...) UseMethod("as.logical")
as.logical.default <- function (x, ...) base::as.logical(x, ...)
as.logical.character <- function (x, ...) nchar(x) > 0
Если я попробую несколько примеров в командной строке, это сработает
> as.logical(letters)
[1] TRUE TRUE TRUE ...
Но, что интересно, cond
«логический» вектор не пытается применить as.logical
. Кажется, он используется в других случаях, как показано ниже:
> if (1) print('Has')
[1] "Has"
> if ('Has') print(1)
Error in if ("Has") print(1) : argument is not interpretable as logical
Как cond
оценивает и не может ли я обмануть его с помощью моей функции?