As well as numeric and character vectors, R allows manipulation of logical quantities. The elements of a logical vector can have the values `TRUE`

, `FALSE`

, and `NA`

(for “not available”). The first two are often abbreviated as `T`

and `F`

, respectively. Note however that `T`

and `F`

are just variables which are set to `TRUE`

and `FALSE`

by default, but are not reserved words and hence can be overwritten by the user. Hence, you should always use `TRUE`

and `FALSE`

.

Logical vectors are generated by conditions. For example:

```
x <- 5
x > 13
## [1] FALSE
```

The result is a logical output the same length as `x`

with values `FALSE`

corresponding to elements of `x`

where the condition is not met and `TRUE`

where it is. Thus, a vector of several elements being compared to a value will result in a logical vector with length equal to x.

```
x <- c(5, 14, 10, 22)
x > 13
## [1] FALSE TRUE FALSE TRUE
```

The logical operators are `<`

, `<=`

, `>`

, `>=`

, `==`

for exact equality and `!=`

for inequality. We can also use `%in%`

for group membership and `is.na`

for missing values.

```
12 == 12
## [1] TRUE
12 <= c(12, 11)
## [1] TRUE FALSE
12 %in% c(12, 11, 8)
## [1] TRUE
x <- c(12, NA, 11, NA, 8)
is.na(x)
## [1] FALSE TRUE FALSE TRUE FALSE
```

Logical vectors may be used in ordinary arithmetic, in which case they are coerced into
numeric vectors, `FALSE`

becoming 0 and `TRUE`

becoming 1.

```
x <- c(5, 14, 10, 22)
# how many elements in x are greater than 13?
sum(x > 13)
## [1] 2
```