在 R 语言中,布尔变量只能取两个值:TRUE
和 FALSE
。例如,
# declare boolean
x <- TRUE
print(x)
print(class(x))
# declare boolean using single character
y <- F
print(y)
print(class(y))
输出
[1] TRUE [1] "logical" [1] FALSE [1] "logical"
这里,我们将 x 和 y 声明为布尔变量。在 R 语言中,布尔变量属于 logical
类。
你也可以使用单个字符声明布尔变量——T
或 F
。这里,T
代表 TRUE
,F
代表 FALSE
。
R 布尔值与比较运算符
比较运算符用于比较两个值。
运算符 | 描述 | 示例 |
---|---|---|
> |
大于 | 5 > 6 返回 FALSE |
< |
小于 | 5 < 6 返回 TRUE |
== |
等于 | 10 == 10 返回 TRUE |
!= |
不等于 | 10 != 10 返回 FALSE |
>= |
大于或等于 | 5 >= 6 返回 FALSE |
<= |
小于或等于 | 6 <= 6 返回 TRUE |
比较的结果是一个布尔值。例如,要检查两个数字是否相等,可以使用 ==
运算符。
x <- 10
y <- 23
# compare x and y
print(x == y) # FALSE
同样,要检查 x 是否小于 y,可以使用 <
运算符。
x <- 10
y <- 23
# compare x and y
print(x < y) # TRUE
由于存储在 x 中的值小于存储在 y 中的值,因此比较 x < y
的结果为 TRUE
。
R 布尔值与逻辑运算符
逻辑运算符用于比较两个比较的结果。R 语言中有三种逻辑运算符。它们是
- AND 运算符 (
&
) - OR 运算符 (
|
) - NOT 运算符 (
!
)
AND 运算符 (&)
AND 运算符 &
接收两个逻辑值作为输入,并返回另一个逻辑值作为输出。
只有当两个输入逻辑值都为 TRUE
或都评估为 TRUE
时,运算符的输出才为 TRUE
。
设 a 和 b 代表两个操作数。0
代表 FALSE
,1
代表 TRUE
。那么,
a | b | a & b |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
例如,
# print & of TRUE and FALSE combinations
TRUE & TRUE
TRUE & FALSE
FALSE & TRUE
FALSE & FALSE
输出
[1] TRUE [1] FALSE [1] FALSE [1] FALSE
任何逻辑运算符的输入也可以是两个或多个变量之间的比较。例如,
x <- 10
y <- 23
z <- 12
print(x<y & y>z)
输出
[1] TRUE
这里,条件检查 x 是否小于 y 并且 y 是否小于 z。如果两个条件都评估为 TRUE
,则输出为 TRUE
。如果其中任何一个为 FALSE
,则输出为 FALSE
。
OR 运算符 (|)
OR 运算符 |
返回 TRUE
,如果所有或任何一个逻辑输入为 TRUE
或评估为 TRUE
。如果它们都为 FALSE
,则返回 FALSE
。请看下表。
a | b | a | b |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
例如,
# print | of TRUE and FALSE combinations
TRUE | TRUE
TRUE | FALSE
FALSE | TRUE
FALSE | FALSE
输出
[1] TRUE [1] TRUE [1] TRUE [1] FALSE
这里,如果任何一个输入为 TRUE
,则输出为 TRUE
。
与 AND 运算符类似,你可以使用任意数量的比较作为 OR 运算符的输入。例如,
w <- 54
x <- 12
y <- 25
z <- 1
print(w>x | x>y | z>w)
输出
[1] TRUE
这里,只有比较 w>x
评估为 TRUE
。除此之外,所有其他比较都评估为 FALSE
。由于至少一个输入为 TRUE
,因此整个比较的输出为 TRUE
。
NOT (!) 运算符
NOT 运算符 !
用于否定它所作用的逻辑值。如果输入值为 TRUE
,它将变为 FALSE
,反之亦然。
a | !a |
---|---|
1 | 0 |
0 | 1 |
例如,
# print ! of TRUE and FALSE
!TRUE
!FALSE
输出
[1] FALSE [1] TRUE
这里,输出是输入的否定。
我们可以将 !
运算符与比较一起使用。例如,!(x > 12)
与 x <= 12
相同。这意味着 x 不大于 12。这意味着 x 可以小于或等于 12。
你还可以将 NOT 运算符与任何评估为布尔值的内置函数一起使用。例如,
x <- 3 + 5i
# using ! with in-built function
print(!is.numeric(x))
输出
[1] TRUE
这里,由于 x 是 complex
类型,函数 is.numeric(x)
评估为 FALSE
,而 FALSE
的否定是 TRUE
,因此产生此输出。
示例:R 比较运算符和逻辑运算符
你可以将所有三个逻辑运算符与比较运算符一起使用。
x <- 5
print(is.numeric(x) & (x>5 | x==5))
输出
[1] TRUE
这里,我们可以将整个操作分为两部分——is.numeric(x)
和 (x>5 | x==5)
。由于它们之间有一个 AND 运算符,如果它们都评估为 TRUE
,则输出才为 TRUE
。
该程序的运作方式如下
is.numeric(x)
- 这评估为TRUE
,因为 x 是numeric
类型(x>5 | x==5)
- 这评估为TRUE
,因为x==5
为TRUE