Я пытаюсь понять, как короткое замыкание реализовано в R. Вот пример data.frame:
v <- data.frame(id=c(1,2,3,4), effective_from=c('', '1/1/2001', '10/1/2001', '1/1/2002'), effective_to=c('', '1/10/2001', '', '1/1/2001'))
id effective_from effective_to
1 1
2 2 1/1/2001 1/10/2001
3 3 10/1/2001
4 4 1/1/2002 1/1/2001
Я думаю, что сработает следующее утверждение (предположим, effective_from
и effective_to
являются строками, которые могут содержать дату или быть пустыми).
str_length(v$effective_from) > 0 & str_length(v$effective_to) > 0 & as.Date(v$effective_from) > as.Date(v$effective_to)
Но я получаю сообщение об ошибке:
Error in charToDate(x) :
character string is not in a standard unambiguous format
Я ожидал получить: FALSE, FALSE, FALSE, TRUE
после выполнения моего оператора выше вместо ошибки.
Я бы подумал, что если длина effective_from
или effective_to
<1, то последующие шаги не будут выполнены. В первой строке я бы предположил, что, поскольку <code>effective_from не заполнено, мое приведенное выше утверждение вернет FALSE при попытке оценить str_length('effective_from')
, что приведет к короткому замыканию при дальнейшей оценке.
Не уверен, почему это не работает .. . Как бы я реализовал короткозамкнутый элементный И или ИЛИ?