Для двух целых чисел:
a <- 1L
b <- 1L
Как и следовало ожидать, добавление, вычитание или их умножение также дает целое число:
class(a + b)
# [1] "integer"
class(a - b)
# [1] "integer"
class(a * b)
# [1] "integer"
Но деление их дает числовое значение:
class(a / b)
# [1] "numeric"
Я думаю, что могу понять, почему: потому что другие комбинации целых чисел (например, a <- 2L
и b <- 3L
) возвращают числовое значение, более общая задача - всегда возвращать числовое значение.
Теперь на возведение в степень:
class(a ^ b)
# [1] "numeric"
Это немного сюрприз для меня. Может ли кто-нибудь объяснить, почему он был разработан таким образом?