Syntax {base} | R Documentation |

Outlines **R** syntax and gives the precedence of operators.

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.

There are substantial precedence differences between **R** and S. In
particular, in S `?`

has the same precedence as (binary) `+ -`

and `& && | ||`

have equal precedence.

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.

```
## 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 : ....
## End(Not run)
```

[Package *base* version 4.3.0 Index]