本节主要讲述logic运算,也就是其他语言中的bool型变量,在Ru语言中,分为TRUE
和FALSE
。
swirl前面讲的很简单,仅仅把代码复制一下:
> TRUE == TRUE
[1] TRUE
> (FALSE == TRUE) == FALSE
[1] TRUE
> 6 == 7
[1] FALSE
> 10 <= 10
[1] TRUE
> 5 != 7
[1] TRUE
> !(5 == 7)
[1] TRUE
&
,&&
,|
,||
操作
> FALSE & FALSE
[1] FALSE
> TRUE & c(TRUE, FALSE, FALSE)
[1] TRUE FALSE FALSE
> TRUE && c(FALSE, TRUE, FALSE)
[1] FALSE
> TRUE | c(TRUE, FALSE, FALSE)
[1] TRUE TRUE TRUE
> TRUE || c(TRUE, FALSE, FALSE)
[1] TRUE
如果是&
或|
,就是和向量中每个元素进行一遍逻辑运算,如果是&&
或||
,则仅仅是和向量中的第一个元素做逻辑运算.
逻辑运算的优先级
> 5 > 8 || 6 != 8 && 4 > 3.9
[1] TRUE
优先级我自己根据其他语言总结的
()
> >
=<
=<=
=>=
=!=
> &&
> ||
逻辑运算的一些函数
isTRUE()
> isTRUE(6 > 4)
[1] TRUE
identical()
> identical('twins', 'twins')
[1] TRUE
> identical(xor, xor)
[1] TRUE
xor()
> xor(5 == 6, !FALSE)
[1] TRUE
异或操作,一样返回FALSE
,不一样返回TRUE
any(), all(), which()
可以用来判断向量中是否还有特定元素
> ints <- sample(10) # 随机采样1~10之间的数
> ints
[1] 9 8 1 7 5 2 3 4 6 10
> ints > 5
[1] TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE
> which(ints > 7)
[1] 1 2 10
> any(ints < 0)
[1] FALSE
> all(ints > 0)
[1] TRUE
which()
是logical vector作为输入参数,返回是TRUE的索引值,那我们就可以根据这个函数来找向量中大于什么数的位置或者小于什么什么数的位置,或者等于什么什么数的位置等等操作。
any()
是logical vector作为输入参数,logical vector只要有一个或者多个元素为TRUE,则返回TRUE
all()
是logical vector作为输入参数,logical vector必须全部元素为TRUE,则返回TRUE