The R Project SVN R

Rev

Rev 67324 | Rev 82591 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
42333 ripley 1
% File src/library/base/man/Syntax.Rd
68948 ripley 2
% Part of the R package, https://www.R-project.org
67313 maechler 3
% Copyright 1995-2015 R Core Team
42333 ripley 4
% Distributed under GPL 2 or later
5
 
59616 ripley 6
% = is treated specially in the parser: see PR#14595
7
 
18286 ripley 8
\name{Syntax}
56186 murdoch 9
\alias{Syntax}
34966 maechler 10
\title{Operator Syntax and Precedence}
18286 ripley 11
\description{
59616 ripley 12
  Outlines \R syntax and gives the precedence of operators.
18286 ripley 13
}
14
\details{
15
  The following unary and binary operators are defined.  They are listed
16
  in precedence groups, from highest to lowest.
17
  \tabular{ll}{
56382 murdoch 18
    \code{:: :::}\tab access variables in a namespace\cr
21048 ripley 19
    \code{$ @}\tab component / slot extraction\cr
51163 murdoch 20
    \code{[ [[}\tab indexing\cr
18286 ripley 21
    \code{^}\tab exponentiation (right to left)\cr
22
    \code{- +}\tab unary minus and plus\cr
23
    \code{:}\tab sequence operator\cr
58042 ripley 24
    \code{\%any\%}\tab special operators (including \code{\%\%} and \code{\%/\%})\cr
18286 ripley 25
    \code{* /}\tab multiply, divide\cr
18347 ripley 26
    \code{+ -}\tab (binary) add, subtract\cr
18286 ripley 27
    \code{< > <= >= == !=}\tab ordering and comparison\cr
28
    \code{!}\tab negation\cr
29
    \code{&  &&}\tab and\cr
30
    \code{| ||}\tab or\cr
31
    \code{~}\tab as in formulae\cr
32
    \code{-> ->>}\tab rightwards assignment\cr
59616 ripley 33
    \code{<- <<-}\tab assignment (right to left)\cr
18286 ripley 34
    \code{=}\tab assignment (right to left)\cr
35
    \code{?}\tab help (unary and binary)\cr
36
  }
37
  Within an expression operators of equal precedence are evaluated
59616 ripley 38
  from left to right except where indicated.  (Note that \code{=} is not
39
  necessarily an operator.)
57685 maechler 40
 
51163 murdoch 41
  The binary operators \code{::}, \code{:::}, \code{$} and \code{@} require
42
  names or string constants on the right hand side, and the first two
43
  also require them on the left.
18286 ripley 44
 
42950 ripley 45
  The links in the \bold{See Also} section cover most other aspects of
18286 ripley 46
  the basic syntax.
47
}
48
\note{
49
  There are substantial precedence differences between \R and S.  In
35579 ripley 50
  particular, in S \code{?} has the same precedence as (binary) \code{+ -}
51
  and \code{& && | ||} have equal precedence.
18286 ripley 52
}
24300 ripley 53
\references{
54
  Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
55
  \emph{The New S Language}.
47262 ripley 56
  Wadsworth & Brooks/Cole.
24300 ripley 57
}
18286 ripley 58
\seealso{
59
  \code{\link{Arithmetic}}, \code{\link{Comparison}}, \code{\link{Control}},
34712 ripley 60
  \code{\link{Extract}}, \code{\link{Logic}},
42950 ripley 61
  \code{\link{NumericConstants}}, \code{\link{Paren}},
62
  \code{\link{Quotes}}, \code{\link{Reserved}}.
18286 ripley 63
 
61823 ripley 64
  The \sQuote{R Language Definition} manual.
18286 ripley 65
}
67313 maechler 66
\examples{
67
## Logical AND ("&&") has higher precedence than OR ("||"):
68
TRUE || TRUE && FALSE   # is the same as
69
TRUE || (TRUE && FALSE) # and different from
70
(TRUE || TRUE) && FALSE
71
 
72
## Special operators have higher precedence than "!" (logical NOT).
73
## You can use this for \%in\% :
74
! 1:10 \%in\% c(2, 3, 5, 7) # same as !(1:10 \%in\% c(2, 3, 5, 7))
75
## but we strongly advise to use the "!( ... )" form in this case!
76
 
77
 
78
## '=' has lower precedence than '<-' ... so you should not mix them
79
##     (and '<-' is considered better style anyway):
67324 maechler 80
\donttest{## Consequently, this gives a ("non-catchable") error
81
 x <- y = 5  #->  Error in (x <- y) = 5 : ....
67313 maechler 82
}
67324 maechler 83
}
18286 ripley 84
\keyword{documentation}
43772 maechler 85
\keyword{programming}