R: Boolean operators and functions

xor.default {bit} | R Documentation

## Boolean operators and functions

### Description

Boolean NEGATION '!', AND '&', OR '|' and EXCLUSIVE OR xor', see `Logic`.

### Usage

    ## Default S3 method:
    xor(x, y)

    ## S3 method for class 'logical'
    xor(x, y)

    ## S3 method for class 'bit'
    !x

    ## S3 method for class 'bit'
    e1 & e2

    ## S3 method for class 'bit'
    e1 | e2

    ## S3 method for class 'bit'
    e1 == e2

    ## S3 method for class 'bit'
    e1 != e2

    ## S3 method for class 'bit'
    xor(x, y)

    ## S3 method for class 'bitwhich'
    !x

    ## S3 method for class 'bitwhich'
    e1 & e2

    ## S3 method for class 'bitwhich'
    e1 | e2

    ## S3 method for class 'bitwhich'
    e1 == e2

    ## S3 method for class 'bitwhich'
    e1 != e2

    ## S3 method for class 'bitwhich'
    xor(x, y)

    ## S3 method for class 'booltype'
    e1 & e2

    ## S3 method for class 'booltype'
    e1 | e2

    ## S3 method for class 'booltype'
    e1 == e2

    ## S3 method for class 'booltype'
    e1 != e2

    ## S3 method for class 'booltype'
    xor(x, y)

    xor(x, y)

### Arguments

`x` | a `is.booltype` vector
`y` | a `is.booltype` vector
`e1` | a `is.booltype` vector
`e2` | a `is.booltype` vector

### Details

The binary operators and function `xor` can now combine any `is.booltype` vectors. They now recycle if vectors have different length. If the two arguments have different `booltypes` the return value corresponds to the lower `booltype` of the two.

Boolean operations on `bit` vectors are extremely fast because they are implemented using C's bitwise operators. Boolean operations on or `bitwhich` vectors are even faster, if they represent very skewed selections.

The `xor` function has been made generic and `xor.default` has been implemented much faster than R's standard `xor`. This was possible because actually boolean function `xor` and comparison operator `!=` do the same (even with NAs), and `!=` is much faster than the multiple calls in `(x | y) & !(x & y)`

### Value

An object of class `booltype` or `logical`

### Methods (by class)

- `default`: default method for `xor`

- `logical`: `logical` method for `xor`

- `bit`: `bit` method for `!`

- `bit`: `bit` method for `&`

- `bit`: `bit` method for `|`

- `bit`: `bit` method for `==`

- `bit`: `bit` method for `!=`

- `bit`: `bit` method for `xor`

- `bitwhich`: `bitwhich` method for `!`

- `bitwhich`: `bitwhich` method for `&`

- `bitwhich`: `bitwhich` method for `|`

- `bitwhich`: `bitwhich` method for `==`

- `bitwhich`: `bitwhich` method for `!=`

- `bitwhich`: `bitwhich` method for `xor`

- `booltype`: `booltype` method for `&`

- `booltype`: `booltype` method for `|`

- `booltype`: `booltype` method for `==`

- `booltype`: `booltype` method for `!=`

- `booltype`: `booltype` method for `xor`

### Author(s)

Jens Oehlschlägel

### See Also

`booltypes`, `Logic`

### Examples

      x <- c(FALSE, FALSE, FALSE, NA, NA, NA, TRUE, TRUE, TRUE)
      y <- c(FALSE, NA, TRUE, FALSE, NA, TRUE, FALSE, NA, TRUE)

      x|y
      x|as.bit(y)
      x|as.bitwhich(y)
      x|as.which(y)
      x|ri(1,1,9)

[Package bit version 4.0.4 Index]