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