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