Arithmetic Operators

Addition

> 1 + 4
[1] 5
> 10 + 12
[1] 22
> sum(c(10, 15, 50))
[1] 75

Subtraction

> 4 - 1
[1] 3
> 10 - 12
[1] -2

Multiplication

> 10 * 3
[1] 30
> 1.5 * 2
[1] 3
> prod(c(1.5, 2))
[1] 3

Division

> 10/5
[1] 2
> typeof(10L/5L) # Division always returns double
[1] "double"
> 12/5
[1] 2.4

Exponent

Using "^"(), ^ or ** -

> "^"(2,3)
[1] 8
> 2^3
[1] 8
> 2**3
[1] 8

Modulus

To get the modulus or remainder from division use %% -

> 10%%4
[1] 2
> 24%%7
[1] 3

Integer Division

Using %/% get only the integers from a division -

> 10%/%4
[1] 2
> 24%/%7
[1] 3

Relational Operators

These operators returns a logical vector.

Less than, <

Single comparison -

> 10 < 11
[1] TRUE
> 11 < 10
[1] FALSE

Multiple comparison -

> x <- c(1, 5, 10, 12, 15, 6)
> x < 6  # Checks whether an element is less than 6 or not
[1]  TRUE  TRUE FALSE FALSE FALSE FALSE

Greater than, >

Single comparison -

> 10 > 11
[1] FALSE
> 11 > 10
[1] TRUE

Multiple comparison -

> x <- c(1, 5, 10, 12, 15, 6)
> x > 6  # Checks whether an element is greater than 6 or not
[1] FALSE FALSE  TRUE  TRUE  TRUE FALSE

Less than or equal to, <=

Single comparison -

> 10 <= 11
[1] TRUE
> 11 <= 11
[1] TRUE
> 11 <= 10
[1] FALSE

Multiple comparison -

> x <- c(1, 5, 10, 12, 15, 6)
> x <= 6  # Checks whether an element is less than or equal to 6 or not
[1]  TRUE  TRUE FALSE FALSE FALSE  TRUE

Greater than or equal to, >==

Single comparison -

> 10 >= 11
[1] FALSE
> 11 >= 11
[1] TRUE
> 11 >= 10
[1] TRUE

Multiple comparison -

> x <- c(1, 5, 10, 12, 15, 6)
> x >= 6  # Checks whether an element is greater than or equal to 6 or not
[1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE

Equal to, ==

> x <- c(1, 5, 10, 12, 15, 6)
> x == 10  # Checks which element of the vector is equal to 10
[1] FALSE FALSE  TRUE FALSE FALSE FALSE
> which(x == 10)  # Returns the indexes of logical TRUE
[1] 3
> x == 10000  # Checks which element of the vector is equal to 10000
[1] FALSE FALSE FALSE FALSE FALSE FALSE

Not equal to, !=

> x <- c(1, 5, 10, 12, 15, 6)
> x != 10  # Checks which element of the vector is not equal to 10
[1]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
> which(x != 10)  # Returns the indexes of logical TRUE
[1] 1 2 4 5 6

AND, OR operators

Single comparison, || and &&

> x <- T
> y <- T
> x == T  && y == T  # Checks if both the two conditions are TRUE or not
[1] TRUE
> x <- T
> y <- F
> x == T  || y == T  # Checks if either one of the two conditions are TRUE or not
[1] TRUE

If the single operators are used for element-wise comparison then only the first pair/first element of the vector will be compared -

> x <- c(1, 5, 10, 12, 15, 6)
> # Checks if the first element is greater than or equal to 10 and less than or equal to 16
> x >= 10 || x <= 16  
[1] TRUE

Element-wise comparison, | and &

Element-wise AND operations can be performed using | -

> x <- c(1, 5, 10, 12, 15, 6)
> # Checks if the element is greater than or equal to 10 and less than or equal to 16
> x >= 10 & x <= 16  
[1] FALSE FALSE  TRUE  TRUE  TRUE FALSE
> which(x >= 10 & x <= 16)
[1] 3 4 5

OR operations can be performed using | -

> x <- c(1, 5, 10, 12, 15, 6)
> x == 10 | x == 6  # Checks if the element is equal to either 10 or 6
[1] FALSE FALSE  TRUE FALSE FALSE  TRUE
> which(x == 10 | x == 6)
[1] 3 6

%in%

A simpler way to perform element wise OR operations using %in% -

> x <- c(1, 5, 10, 12, 15, 6)
> x %in% c(6, 10)  # Checks if the element is equal to either 10 or 6
[1] FALSE FALSE  TRUE FALSE FALSE  TRUE
> which(x %in% c(6, 10))
[1] 3 6

NOT %in%

Using ! to invert the logical vector -

> x <- c(1, 5, 10, 12, 15, 6)
> !(x %in% c(6, 10))  # Checks if the element is not equal to either 10 or 6
[1]  TRUE  TRUE FALSE  TRUE  TRUE FALSE
> which(!(x %in% c(6, 10)))
[1] 1 2 4 5
LS0tDQp0aXRsZTogIk9wZXJhdG9ycyBpbiBSIg0KYXV0aG9yOiAnTUQgQUhTQU5VTCBJU0xBTScNCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdGhlbWU6IGNlcnVsZWFuDQogICAgaGlnaGxpZ2h0OiBoYWRkb2NrDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICBjb21tZW50ID0gIiIsIHByb21wdCA9IFRSVUUsIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFDQopDQpgYGANCg0KLS0tDQoNCiMgQXJpdGhtZXRpYyBPcGVyYXRvcnMNCg0KIyMgQWRkaXRpb24NCg0KYGBge3J9DQoxICsgNA0KMTAgKyAxMg0Kc3VtKGMoMTAsIDE1LCA1MCkpDQpgYGANCg0KIyMgU3VidHJhY3Rpb24NCg0KYGBge3J9DQo0IC0gMQ0KMTAgLSAxMg0KYGBgDQoNCiMjIE11bHRpcGxpY2F0aW9uDQoNCmBgYHtyfQ0KMTAgKiAzDQoxLjUgKiAyDQpwcm9kKGMoMS41LCAyKSkNCmBgYA0KDQojIyBEaXZpc2lvbg0KDQpgYGB7cn0NCjEwLzUNCnR5cGVvZigxMEwvNUwpICMgRGl2aXNpb24gYWx3YXlzIHJldHVybnMgZG91YmxlDQoxMi81DQpgYGANCg0KIyMgRXhwb25lbnQNClVzaW5nIGAiXiIoKWAsIGBeYCBvciBgKipgIC0gDQpgYGB7cn0NCiJeIigyLDMpDQoyXjMNCjIqKjMNCmBgYA0KDQojIyBNb2R1bHVzDQpUbyBnZXQgdGhlIG1vZHVsdXMgb3IgcmVtYWluZGVyIGZyb20gZGl2aXNpb24gdXNlIGAlJWAgLSANCmBgYHtyfQ0KMTAlJTQNCjI0JSU3DQpgYGANCg0KIyMgSW50ZWdlciBEaXZpc2lvbg0KVXNpbmcgYCUvJWAgZ2V0IG9ubHkgdGhlIGludGVnZXJzIGZyb20gYSBkaXZpc2lvbiAtIA0KYGBge3J9DQoxMCUvJTQNCjI0JS8lNw0KYGBgDQoNCiMgUmVsYXRpb25hbCBPcGVyYXRvcnMNClRoZXNlIG9wZXJhdG9ycyByZXR1cm5zIGEgbG9naWNhbCB2ZWN0b3IuDQoNCiMjIExlc3MgdGhhbiwgPA0KDQpTaW5nbGUgY29tcGFyaXNvbiAtIA0KYGBge3J9DQoxMCA8IDExDQoxMSA8IDEwDQpgYGANCk11bHRpcGxlIGNvbXBhcmlzb24gLQ0KYGBge3J9DQp4IDwtIGMoMSwgNSwgMTAsIDEyLCAxNSwgNikNCnggPCA2ICAjIENoZWNrcyB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgbGVzcyB0aGFuIDYgb3Igbm90DQpgYGANCg0KDQojIyBHcmVhdGVyIHRoYW4sID4NClNpbmdsZSBjb21wYXJpc29uIC0gDQpgYGB7cn0NCjEwID4gMTENCjExID4gMTANCmBgYA0KTXVsdGlwbGUgY29tcGFyaXNvbiAtDQpgYGB7cn0NCnggPC0gYygxLCA1LCAxMCwgMTIsIDE1LCA2KQ0KeCA+IDYgICMgQ2hlY2tzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBncmVhdGVyIHRoYW4gNiBvciBub3QNCmBgYA0KIyMgTGVzcyB0aGFuIG9yIGVxdWFsIHRvLCA8PQ0KU2luZ2xlIGNvbXBhcmlzb24gLSANCmBgYHtyfQ0KMTAgPD0gMTENCjExIDw9IDExDQoxMSA8PSAxMA0KYGBgDQpNdWx0aXBsZSBjb21wYXJpc29uIC0NCmBgYHtyfQ0KeCA8LSBjKDEsIDUsIDEwLCAxMiwgMTUsIDYpDQp4IDw9IDYgICMgQ2hlY2tzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gNiBvciBub3QNCmBgYA0KIyMgR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvLCA+PT0NClNpbmdsZSBjb21wYXJpc29uIC0gDQpgYGB7cn0NCjEwID49IDExDQoxMSA+PSAxMQ0KMTEgPj0gMTANCmBgYA0KTXVsdGlwbGUgY29tcGFyaXNvbiAtDQpgYGB7cn0NCnggPC0gYygxLCA1LCAxMCwgMTIsIDE1LCA2KQ0KeCA+PSA2ICAjIENoZWNrcyB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDYgb3Igbm90DQpgYGANCiMjIEVxdWFsIHRvLCA9PQ0KDQpgYGB7cn0NCnggPC0gYygxLCA1LCAxMCwgMTIsIDE1LCA2KQ0KeCA9PSAxMCAgIyBDaGVja3Mgd2hpY2ggZWxlbWVudCBvZiB0aGUgdmVjdG9yIGlzIGVxdWFsIHRvIDEwDQp3aGljaCh4ID09IDEwKSAgIyBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIGxvZ2ljYWwgVFJVRQ0KeCA9PSAxMDAwMCAgIyBDaGVja3Mgd2hpY2ggZWxlbWVudCBvZiB0aGUgdmVjdG9yIGlzIGVxdWFsIHRvIDEwMDAwDQpgYGANCg0KIyMgTm90IGVxdWFsIHRvLCAhPQ0KDQpgYGB7cn0NCnggPC0gYygxLCA1LCAxMCwgMTIsIDE1LCA2KQ0KeCAhPSAxMCAgIyBDaGVja3Mgd2hpY2ggZWxlbWVudCBvZiB0aGUgdmVjdG9yIGlzIG5vdCBlcXVhbCB0byAxMA0Kd2hpY2goeCAhPSAxMCkgICMgUmV0dXJucyB0aGUgaW5kZXhlcyBvZiBsb2dpY2FsIFRSVUUNCmBgYA0KDQojIyBBTkQsIE9SIG9wZXJhdG9ycw0KDQojIyMgU2luZ2xlIGNvbXBhcmlzb24sIHx8IGFuZCAmJg0KDQpgYGB7cn0NCnggPC0gVA0KeSA8LSBUDQp4ID09IFQgICYmIHkgPT0gVCAgIyBDaGVja3MgaWYgYm90aCB0aGUgdHdvIGNvbmRpdGlvbnMgYXJlIFRSVUUgb3Igbm90DQpgYGANCg0KYGBge3J9DQp4IDwtIFQNCnkgPC0gRg0KeCA9PSBUICB8fCB5ID09IFQgICMgQ2hlY2tzIGlmIGVpdGhlciBvbmUgb2YgdGhlIHR3byBjb25kaXRpb25zIGFyZSBUUlVFIG9yIG5vdA0KYGBgDQpJZiB0aGUgc2luZ2xlIG9wZXJhdG9ycyBhcmUgdXNlZCBmb3IgZWxlbWVudC13aXNlIGNvbXBhcmlzb24gdGhlbiBvbmx5IHRoZSBmaXJzdCBwYWlyL2ZpcnN0IGVsZW1lbnQgb2YgdGhlIHZlY3RvciB3aWxsIGJlIGNvbXBhcmVkIC0gDQpgYGB7cn0NCnggPC0gYygxLCA1LCAxMCwgMTIsIDE1LCA2KQ0KIyBDaGVja3MgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEwIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTYNCnggPj0gMTAgfHwgeCA8PSAxNiAgDQpgYGANCg0KIyMjIEVsZW1lbnQtd2lzZSBjb21wYXJpc29uLCB8IGFuZCAmDQpFbGVtZW50LXdpc2UgQU5EIG9wZXJhdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCB1c2luZyBgfGAgLSANCmBgYHtyfQ0KeCA8LSBjKDEsIDUsIDEwLCAxMiwgMTUsIDYpDQojIENoZWNrcyBpZiB0aGUgZWxlbWVudCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAxNg0KeCA+PSAxMCAmIHggPD0gMTYgIA0Kd2hpY2goeCA+PSAxMCAmIHggPD0gMTYpDQpgYGANCg0KT1Igb3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIHVzaW5nIGB8YCAtIA0KYGBge3J9DQp4IDwtIGMoMSwgNSwgMTAsIDEyLCAxNSwgNikNCnggPT0gMTAgfCB4ID09IDYgICMgQ2hlY2tzIGlmIHRoZSBlbGVtZW50IGlzIGVxdWFsIHRvIGVpdGhlciAxMCBvciA2DQp3aGljaCh4ID09IDEwIHwgeCA9PSA2KQ0KYGBgDQoNCiMjICVpbiUNCkEgc2ltcGxlciB3YXkgdG8gcGVyZm9ybSBlbGVtZW50IHdpc2UgT1Igb3BlcmF0aW9ucyB1c2luZyBgJWluJWAgLSANCmBgYHtyfQ0KeCA8LSBjKDEsIDUsIDEwLCAxMiwgMTUsIDYpDQp4ICVpbiUgYyg2LCAxMCkgICMgQ2hlY2tzIGlmIHRoZSBlbGVtZW50IGlzIGVxdWFsIHRvIGVpdGhlciAxMCBvciA2DQp3aGljaCh4ICVpbiUgYyg2LCAxMCkpDQpgYGANCg0KIyMgTk9UICVpbiUNClVzaW5nIGAhYCB0byBpbnZlcnQgdGhlIGxvZ2ljYWwgdmVjdG9yIC0gDQpgYGB7cn0NCnggPC0gYygxLCA1LCAxMCwgMTIsIDE1LCA2KQ0KISh4ICVpbiUgYyg2LCAxMCkpICAjIENoZWNrcyBpZiB0aGUgZWxlbWVudCBpcyBub3QgZXF1YWwgdG8gZWl0aGVyIDEwIG9yIDYNCndoaWNoKCEoeCAlaW4lIGMoNiwgMTApKSkNCmBgYA==