openlang

Как R обрабатывает повторяющиеся арифметические знаки

Я случайно поставил лишний + в коде на R и заметил, что никаких возражений не последовало.

Проверив ещё несколько вариантов, я обнаружил довольно странное поведение R, когда операторы идут подряд.

Может кто-нибудь объяснить причину и порядок выполнения операций?


6 + 2
#> [1] 8

6 +++ 2
#> [1] 8

6 --- 2
#> [1] 4

6 +-+ 2
#> [1] 4

6 -+- 2
#> [1] 8
Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    В R +/- могут быть и бинарными, и унарными операторами, причём унарные имеют больший приоритет. поэтому первый знак задаёт настоящую бинарную операцию, а остальные образуют вложенные унарные +/- над числом справа. унарный + ничего не меняет, а унарный - каждый раз обращает знак.

    поэтому 6 +++ 2 означает 6 + (+(+2)) = 8, а 6 --- 2 превращается в 6 - (-(-2)) = 4. остальные две последовательности работают так же, просто посчитайте минусы после первого оператора (чётное число даёт плюс, нечётное даёт минус).

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как получить текущее время в секундах?

    В Dyalog APL функция ⎕TS выдаёт текущие год, месяц, день, часы, минуты, секунды и так далее, но можно ли получить временную м…

    Ответы 2Последняя активность apl
  2. Swift - Получение положительного числа

    можно ли преобразовать целое число в его абсолютное значение? например Я уже пробовал UInt(), думая, что это превратит Int в…

    Ответы 4Последняя активность swift
  3. Не получается построить корреляционный график

    Привет всем, Может кто-нибудь объяснить, почему функция chart.Correlation из пакета Performance Analytics не работает с данны…

    Ответы 3Последняя активность r