跳到主要内容

R语言布尔值(比较和逻辑运算符)

提示
  1. 布尔值的基础:在 R 中,布尔变量只能是 TRUEFALSE,属于 logical 类型,可使用 TF 作为简写。
  2. 比较运算符的使用:比较运算符(如 >, <, ==, !=, >=, <=)用于比较两个值,输出为布尔值。
  3. 逻辑运算符的应用:逻辑运算符(如 &|!)用于比较逻辑表达式的结果,&| 对两个布尔值操作,而 ! 对单个布尔值取反。

在 R 中,布尔变量只能取两个值:TRUEFALSE。例如,

# 声明布尔变量
x <- TRUE
print(x)
print(class(x))

# 使用单个字符声明布尔变量
y <- F
print(y)
print(class(y))

输出

[1] TRUE
[1] "logical"
[1] FALSE
[1] "logical"

这里,我们声明了 xy 为布尔变量。在 R 中,布尔变量属于 logical 类。

你也可以使用单个字符 TF 来声明布尔变量。这里,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

# 比较 x 和 y
print(x == y) # FALSE

类似地,要检查 x 是否小于 y,可以使用 < 运算符。

x <- 10
y <- 23

# 比较 x 和 y
print(x < y) # TRUE

由于存储在 x 中的值小于存储在 y 中的值,比较 x < y 的结果是 TRUE

R 中的布尔值与逻辑运算符

逻辑运算符用于比较两个比较的输出。在 R 中有三种类型的逻辑运算符。它们是:

  • 与运算符(&
  • 或运算符(|
  • 非运算符(!

与运算符(&)

与运算符 & 接受两个逻辑值作为输入,并将输出作为另一个逻辑值。

当输入的两个逻辑值都是 TRUE 或评估为 TRUE 时,运算符的输出才为 TRUE

ab 代表两个操作数。0 表示 FALSE1 表示 TRUE。那么,

aba & b
111
100
010
000

例如,

# 打印 TRUE 和 FALSE 组合的 & 结果
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。请考虑下表。

aba| b
111
101
011
000

例如,

# 打印 TRUE 和 FALSE 组合的 | 结果
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

非运算符(!)

非运算符 ! 用于否定其作用的逻辑值。如果输入值是 TRUE,它将变为 FALSE,反之亦然。

a!a
10
01

例如,

# 打印 TRUE 和 FALSE 的非值
!TRUE
!FALSE

输出

[1] FALSE
[1] TRUE

这里,输出是输入的否定值。

我们可以将 ! 运算符与比较一起使用。例如,!(x > 12)x <= 12 相同。这意味着 x 不大于 12,即 x 可以小于或等于 12

你也可以将非运算符与任何返回布尔值的内置函数一起使用。例如,

x <- 3 + 5i

# 使用 ! 与内置函数
print(!is.numeric(x))

输出

[1] TRUE

这里,由于 x 的类型是 complex,函数 is.numeric(x) 的结果为 FALSE,而 FALSE 的否定是 TRUE,因此输出为 TRUE

示例:R 中的比较和逻辑运算符

你可以将所有三种逻辑运算符与比较运算符一起使用。

x <- 5

print(is.numeric(x) & (x>5 | x==5))

输出

[1] TRUE

这里,我们可以将整个操作分成两部分 - is.numeric(x)(x>5 | x==5)。由于它们之间有一个与运算符,如果它们都评估为 TRUE,那么输出才是 TRUE

程序的工作原理是这样的:

  • is.numeric(x) - 这评估为 TRUE,因为 xnumeric 类型
  • (x>5 | x==5) - 这评估为 TRUE,因为 x==5TRUE