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

`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]