R学习-8.Logic
Logic
这一节简单介绍在R中的逻辑运算。
TRUE
和FALSE
是R中的两个逻辑值,也称布尔值。一个逻辑表达式的最终结果是TRUE
或者FALSE
。
> TRUE == TRUE # 判断是否相等
[1] TRUE
> (FALSE == TRUE) == FALSE # 先运算括号里的
[1] TRUE
> 6 == 7
[1] FALSE
> 6 < 7
[1] TRUE
> 8 > 8
[1] FALSE
> 8 >= 8 # 是否大于等于
[1] TRUE
> 9 != 10 # 是否不等于
[1] TRUE
&
表示AND
运算符,当符号两边值都为TRUE
时,整个表达式的值为TRUE
。&&
和&
类似,不过&&
的左右两边有vector时,只将第一个元素拿出来进行比较。
> TRUE & TRUE
[1] TRUE
> TRUE & FALSE
[1] FALSE
> (FALSE == TRUE) & FALSE
[1] FALSE
> (FALSE != TRUE) & TRUE
[1] TRUE
> TRUE & c(TRUE, FALSE, TRUE)
[1] TRUE FALSE TRUE
> TRUE && c(TRUE, FALSE, TRUE)
[1] TRUE
|
表示OR
运算符,当符号两边有一个为TRUE
时,整个表达式的值为TRUE
。||
和|
类似,不过&&
的左右两边有vector时,只将第一个元素拿出来进行比较。
> TRUE | c(TRUE, FALSE, FALSE)
[1] TRUE TRUE TRUE
> TRUE || c(TRUE, FALSE, FALSE)
[1] TRUE
在一个既有算术运算、比较运算和逻辑运算的表达式中,是先进行算术,然后进行比较,最后是逻辑运算。同等优先级是从左到右计算。逻辑运算中先进行AND
运算再进行OR
运算。
> 1 + 2 > 3 + 2 & 1 + 2 < 6 + 3
[1] FALSE
> 5 > 8 || 6 != 8 && 4 > 3.9 # FALSE || TRUE && TRUE
[1] TRUE
函数isTRUE()
用来判断一个表达式值是否为TRUE
,
!
是NOT
运算符,表示将逻辑值取反,即NOT FALSE 等于TRUE,NOT TRUE等于FALSE
> isTRUE(6>5)
[1] TRUE
> !isTRUE(8 != 5)
[1] FALSE
> isTRUE(8 != 5)
[1] TRUE
函数identical()
判断两个对象是否相等。
> identical('twins', 'twins')
[1] TRUE
> identical(123, 123)
[1] TRUE
> identical(123, 321)
[1] FALSE
xor()
异或运算函数,当两个逻辑值不一样时,返回TRUE
, 其余情况则返回FALSE
> xor(TRUE, FALSE)
[1] TRUE
> xor(FALSE,TRUE)
[1] TRUE
> xor(FALSE,FALSE)
[1] FALSE
> xor(TRUE,TRUE)
[1] FALSE
> xor(5 == 6, !FALSE)
[1] TRUE
which()
可以接受一组逻辑vector,返回元素值为TRUE
的索引值。
> ints <- sample(10) # 创建一组整数vector
> ints
[1] 1 5 10 8 6 3 2 4 7 9
> ints > 7
[1] FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE
> which(ints > 7)
[1] 3 4 10
> idx = which(ints > 7)
> idx
[1] 3 4 10
> ints[idx]
[1] 10 8 9
any()
当存在元素为TRUE
时,则返回TRUE
,all()
当所有元素为TRUE
时,才返回TRUE
。
> ints < 0
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> ints > 5
[1] FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE
> any(ints < 0)
[1] FALSE
> any(ints > 5)
[1] TRUE
> ints > 0
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
> all(ints > 0)
[1] TRUE
> all(ints > 5)
[1] FALSE
上一节:R学习-7.Matrices and Data Frames
上一节:R学习-9.Functions