Почему `if if` в R вычисляется без логического условия? - PullRequest
2 голосов
/ 18 апреля 2019

Я заметил, что если я передаю любое число, кроме 0, в качестве аргумента if statement, код внутри if statement компилируется.Я запутался, почему это происходит!Я понимаю, что R внутренне распознает 0 как ЛОЖЬ, и утверждение внутри if condition не оценивается, что имеет смысл, но почему его оценивают для других чисел?

if(5) {
5 * 5
}

Я ожидал, что будуполучаю ошибку, но код компилируется, и я получаю 25 в качестве ответа.

1 Ответ

6 голосов
/ 18 апреля 2019

На странице справки if if ожидает:

Логический вектор длины один ... Другие типы приводятся к логическому, если это возможно, игнорируя любой класс

Так что в основном это так:

as.logical(5)
# [1] TRUE

, и, поскольку оно 5 != 0, это ИСТИНА

as.logical(0)
# [1] FALSE

, это довольно часто встречается в языках для любого числа, которое не интерпретируется как 0как "правда"

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