중위 연산자와 전위 연산자

중위 연산자와 전위 연산자

R 연산자들의 우선순위와 결합 규칙, 그리고 연산자가 함수 호출처럼 다뤄진다는 점을 함께 살펴볼게요.

출처: R Language Definition - Infix and prefix operators

본문

연산자들의 우선순위는 (높은 것부터 낮은 순으로) 다음과 같아요.

::
$ @
^
- +                (unary)
:
%xyz% |>
* /
+ -                (binary)
> >= < <= == !=
!
& &&
| ||
~                  (unary and binary)
-> ->>
<- <<-
=                  (as assignment)

:는 이항(binary) +/-보다 앞서지만 ^보다는 앞서지 않아요. 따라서 1:3-10 1 2가 되고, 1:2^31:8이 돼요.

지수 연산자 ^와 왼쪽 할당(left assignment) 및 플러스/마이너스 연산자 <- - = <<-는 오른쪽에서 왼쪽으로 결합하고, 다른 모든 연산자는 왼쪽에서 오른쪽으로 결합해요. 즉 2 ^ 2 ^ 34 ^ 3이 아니라 2 ^ 8이고, 1 - 1 - 1은 1이 아니라 -1이에요.

참고로 정수 나머지와 정수 나눗셈을 위한 연산자 %%%/%는 곱셈과 나눗셈보다 우선순위가 높아요.

엄밀히 말해 연산자는 아니지만, = 기호는 함수 호출에서 인자 이름을 지정하거나 함수 정의에서 기본값을 할당하는 데 쓰인다는 점도 언급할 필요가 있어요.

$ 기호는 어떤 의미에서 연산자이지만 임의의 우변(right hand side)을 허용하지 않으며, 색인 구성(Index constructions)에서 다루어져요. $는 다른 모든 연산자보다 우선순위가 높아요.

단항 또는 이항 연산의 파싱된 형태는 연산자를 함수 이름으로, 피연산자를 함수 인자로 하는 함수 호출과 완전히 동일해요. 괄호는 연산자 우선순위만으로 괄호를 추론할 수 있는 경우(예: a * (b + c))에도 이름이 "("인 단항 연산자와 동등한 것으로 기록돼요.

할당 기호도 산술·관계·논리 연산자와 마찬가지로 연산자라는 점에 주의하세요. 파서(parser) 관점에서는 할당의 대상 쪽에도 어떤 표현식이든 허용돼요. 2 + 2 <- 5는 파서가 보기에는 유효한 표현식이에요. 다만 평가자(evaluator)는 이의를 제기하겠죠. 모델 수식(model formula) 연산자에도 비슷한 설명이 적용돼요.

더 알아보기 (Learn more)

출처: R Language Definition - 중위 연산자와 전위 연산자