# Syntax

0th

Percentile

##### Operator Syntax and Precedence

Outlines R syntax and gives the precedence of operators.

Keywords
programming, documentation
##### Details

The following unary and binary operators are defined. They are listed in precedence groups, from highest to lowest.

 :: ::: access variables in a namespace $@ component / slot extraction [ [[ indexing ^ exponentiation (right to left) - + unary minus and plus : sequence operator %any% special operators (including %% and %/%) * / multiply, divide + - (binary) add, subtract < > <= >= == != ordering and comparison ! negation & && and | || or ~ as in formulae -> ->> rightwards assignment <- <<- assignment (right to left) = assignment (right to left) ? help (unary and binary) Within an expression operators of equal precedence are evaluated from left to right except where indicated. (Note that = is not necessarily an operator.) The binary operators ::, :::, $ and @ require names or string constants on the right hand side, and the first two also require them on the left.

The links in the See Also section cover most other aspects of the basic syntax.

##### Note

There are substantial precedence differences between R and S. In particular, in S ? has the same precedence as (binary) + - and & && | || have equal precedence.

##### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Arithmetic, Comparison, Control, Extract, Logic, NumericConstants, Paren, Quotes, Reserved.

The ‘R Language Definition’ manual.

• Syntax
##### Examples
library(base) # NOT RUN { ## Logical AND ("&&") has higher precedence than OR ("||"): TRUE || TRUE && FALSE # is the same as TRUE || (TRUE && FALSE) # and different from (TRUE || TRUE) && FALSE ## Special operators have higher precedence than "!" (logical NOT). ## You can use this for %in% : ! 1:10 %in% c(2, 3, 5, 7) # same as !(1:10 %in% c(2, 3, 5, 7)) ## but we strongly advise to use the "!( ... )" form in this case! ## '=' has lower precedence than '<-' ... so you should not mix them ## (and '<-' is considered better style anyway): # } # NOT RUN { ## Consequently, this gives a ("non-catchable") error x <- y = 5 #-> Error in (x <- y) = 5 : .... # } 
Documentation reproduced from package base, version 3.6.0, License: Part of R 3.6.0

### Community examples

Looks like there are no examples yet.