Логическое значение в R имеет те же байты на элемент, что и целое число (4 байта).Это отличается от C, где bool
имеет 1 байт *, а int
имеет 4 байта.Причина, по которой это делает R, заключается, вероятно, в том, что в этом подходе преобразование логического числа в целое происходит мгновенно, а векторное умножение между логическим и целым числом не требует дополнительных затрат.
То, что вы делаете в обоих случаях, - это получить доступ к указателю на начало вектора и установить для первых 4 байтов значение, которое будет соответствовать 77.
На стороне Rпеременная с именем "x" по-прежнему указывает на те же базовые данные.Но поскольку вы изменили базовые данные, значение данных x теперь имеет байты, которые соответствуют целому числу 77.
Целое число 77 не означает ничего логического, поскольку это не может произойти восновная операция.В действительности, то, что делает R, когда вы вводите невозможное значение, в основном неизвестно.
Логическое значение в R может иметь только три значения: TRUE (соответствует значению 1), FALSE (соответствует значению 0) и NA (соответствует значению -2147483648).
* (Технически, реализация определена, но я видел только 1 байт)