#r
#r
Вопрос:
Я заметил, что если я передаю любое число, кроме 0, в качестве аргумента в an if statement
, код внутри if statement
компилируется. Я не понимаю, почему это происходит! Я понимаю, что R внутренне распознает 0 как FALSE, а оператор внутри if condition
не вычисляется, что имеет смысл, но почему он вычисляется для других чисел?
if(5) {
5 * 5
}
Я ожидал, что получу сообщение об ошибке, но код компилируется, и я получаю 25 в качестве ответа.
Ответ №1:
На странице if
справки if
ожидает:
Длина-один логический вектор … Другие типы по возможности принудительно преобразуются в логические, игнорируя любой класс
Так что в основном это так
as.logical(5)
# [1] TRUE
и поскольку это ТАК 5 != 0
, это ПРАВДА
as.logical(0)
# [1] FALSE
в языках довольно часто любое число, отличное от 0, интерпретируется как «true»
Комментарии:
1. Теперь это имеет смысл! Но знаете ли вы, почему интерпретация чисел рядом с 0 как «true» является случаем для многих языков, как вы указали? Мне просто любопытно!
2. @Ashirwad Похоже, что этот вопрос был задан здесь: softwareengineering.stackexchange.com/questions/198284 /…
3. Похоже, что по этому поводу было проведено тщательное обсуждение. Спасибо` что указали мне на этот ресурс!