4 ms·
I think it it makes sense. TRUE and FALSE are 1 and 0, while `as.logical` will transform your value to the "closest" of those two. If you are used to Pythons
by wodenokoto 4y ago
I think it it makes sense.
TRUE and FALSE are 1 and 0, while `as.logical` will transform your value to the "closest" of those two.
If you are used to Pythons truthiness, that is what `as.logical` is similar to.
- abirch 4y agoTruthy values go through most C type languages. Python included. bool(2) is True
- qsort 4y agoPython goes even further beyond. >>> True + True 2 >>> True * 13 + (1 - False) * 17 30
- tech2 4y agoThat's history coming back to bite it though. There was a period where the symbols True and False existed in Python but the bool class did not. True was _literally_ 1, and False was 0. Because of this, for backward compat, bool is a subclass of int.
- kgwgk 4y agoWhat you show there is that int(True) is one and int(False) is zero. (The same happens in R, for what it's worth. as.integer(TRUE) is one and as.integer(FALSE) is zero and the operations you wrote work just he same.)
- nomilk 4y agoTIL. Also in python bool("a") is True, whereas in R as.logical("a") is NA.
- marcosdumay 4y agoIt makes sense if you know C or any architecture's assembly. But it is an issue, and high level languages shouldn't just replicate it. In a high-level language `1 == TRUE` should be either an error or false.