Я наткнулся на это, когда попытался выяснить, почему некоторые функции, которые я написал, дали неожиданный результат.
> if ("T") print("why?")
[1] "why?"
Почему это работает вместо выдачи ошибки argument is not interpretable as logical
?Это то, что происходит с любой другой строкой, переданной в if
, кроме "T", "F", "TRUE"
и "FALSE"
.
Согласно странице справки if
, условие внутри скобок должно быть логическим вектором, но
> is.logical("T")
[1] FALSE
Как это сочетается?Как if
оценивает состояние, происходит ли что-то тайно, что преобразует Т в Т?