R Cheat Sheet (8): Logic
本节的主要内容是R中的逻辑运算。
1. 逻辑运算符
等号运算符== 是一个逻辑运算符,用于比较两个元素是否相同。
> TRUE == TRUE [1] TRUE > 6 == 7 [1] FALSE
和数学表达式一样, 逻辑表达式也可以使用括号() :
> (FALSE == TRUE) == FALSE [1] TRUE
和多数编程语言一样,< 、<= 、> 、>= 用于比较大小:
> 6 < 7 [1] TRUE > 10 <= 10 [1] TRUE
!= 用于判断不等于:
> 5 != 7 [1] TRUE
! 为非(Not)运算符:
> !(5 == 7) [1] TRUE
& 和&& 为与(And)运算符,二者的去别在于, & 可以作用于整个vector,而&& 只会作用于vector的第一个元素:
> FALSE & FALSE [1] FALSE > TRUE & c(TRUE, FALSE, FALSE) [1] TRUE FALSE FALSE > TRUE && c(TRUE, FALSE, FALSE) [1] TRUE
&& 并不同于其他编程语言中的“短路与”,作用于vector时,只有第一个元素参与运算,无论结果如何,都不会继续运算。
| 和|| 为或(Or)运算符,其区别与& 和&& 相似:
> TRUE | c(TRUE, FALSE, FALSE) [1] TRUE TRUE TRUE > TRUE || c(TRUE, FALSE, FALSE) [1] TRUE
2. 常用函数
函数isTrue() 可以判断其参数的结果是否为TRUE:
> isTRUE(6 > 4) [1] TRUE
函数identical() 可以判断作为其参数的两个R对象是否完全相同:
> identical('twins', 'twins') [1] TRUE
函数xor() 用于进行异或运算:
> xor(TRUE, TRUE) [1] FALSE > xor(TRUE, FALSE) [1] TRUE > xor(FALSE, TRUE) [1] TRUE > xor(FALSE, FALSE) [1] FALSE > xor(5 == 6, !FALSE) [1] TRUE
函数which() 接受logical vector作为参数,会返回参数logical vector中为TRUE的元素的索引:
> ints <- sample(10) > ints [1] 10 9 3 7 2 6 4 1 8 5 > ints > 7 [1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE > which(ints > 7) [1] 1 2 9
类似于which() ,any() 和all() 也接受logical vector作为参数。如果参数logical vector中有一个或多个元素为TRUE,any() 返回TRUE,否则返回FALSE;只有当参数logical vector中所有元素为TRUE,all() 才会返回TRUE,否则返回FALSE:
> any(ints < 0) [1] FALSE > all(ints > 0) [1] TRUE