Logic
位于 base
包(package)。 说明
这些运算符作用于原始向量、逻辑向量和number-like向量。
用法
! x
x & y
x && y
x | y
x || y
xor(x, y)
isTRUE (x)
isFALSE(x)
参数
x , y |
|
细节
!
表示逻辑非(NOT)。
&
和&&
表示逻辑AND,|
和||
表示逻辑OR。较短的形式以与算术运算符大致相同的方式执行元素比较。较长的形式从左到右计算,直到确定结果为止。较长的形式适用于编程 control-flow,并且通常在 if
子句中首选。
在 &&
或 ||
中使用包含多个元素的向量将产生错误。
xor
表示元素异或。
isTRUE(x)
是相同的{ is.logical(x) && length(x) == 1 && !is.na(x) && x }
;isFALSE()
类似地定义。最后,if(isTRUE(cond))
可能优于if(cond)
因为NA
s.
在早些时候R版本,isTRUE <- function(x) identical(x, TRUE)
,有一个错误的缺点,例如,对于x <- c(val = TRUE)
.
数字和复数向量将被强制为逻辑值,零为假,所有非零值为真。对于 !
、 &
、 |
和 xor
,原始向量的处理无需任何强制,这些运算符按位应用(因此 !
是 1 补码)。
运算符 !
、 &
和 |
是通用函数:可以单独为它们编写方法,也可以通过 Ops
(或 S4 Logic
,见下文)组通用函数编写方法。 (有关如何计算调度的信息,请参阅Ops
。)
NA
是有效的逻辑对象。当 x
或 y
的组件是 NA
时,如果结果不明确,则结果将为 NA
。换句话说, NA & TRUE
的计算结果为 NA
,但 NA & FALSE
的计算结果为 FALSE
。请参阅下面的示例。
有关这些运算符的优先级,请参阅Syntax:与许多其他语言(包括 S)不同,AND 和 OR 运算符不具有相同的优先级(AND 运算符的优先级高于 OR 运算符)。
值
对于 !
,与 x
长度相同的逻辑或原始向量(对于原始 x
):名称、维度和维度名称从 x
复制,以及所有其他属性(包括类)(如果没有强制转换)完毕。
对于 |
、 &
和 xor
为逻辑向量或原始向量。如果涉及零长度向量,则结果的长度为零。否则,较短向量的元素将根据需要进行回收(当它们仅部分回收时,使用 warning
)。确定结果属性的规则相当复杂。大多数属性都取自较长的参数,如果它们的长度相同,则取自第一个参数。如果名称与答案的长度相同,则将从第一个名称复制,否则从第二个名称复制。对于时间序列,仅当系列兼容且使用时间序列的类和 tsp
属性(如果两者都相同时,则相同)时,才允许执行这些操作。对于数组(和数组结果),如果它是数组,则从第一个参数获取维度和暗名称,否则从第二个参数获取。
对于 ||
、 &&
和 isTRUE
,长度为 1 的逻辑向量。
S4方法
!
、 &
和 |
是 S4 泛型,Logic
组泛型的后两部分(因此方法需要参数名称 e1, e2
)。
注意
元素运算符有时被称为函数,例如`&`(x, y)
:请参阅Ops
中如何完成argument-matching 的说明。
例子
y <- 1 + (x <- stats::rpois(50, lambda = 1.5) / 4 - 1)
x[(x > 0) & (x < 1)] # all x values between 0 and 1
if (any(x == 0) || any(y == 0)) "zero encountered"
## construct truth tables :
x <- c(NA, FALSE, TRUE)
names(x) <- as.character(x)
outer(x, x, `&`) ## AND table
outer(x, x, `|`) ## OR table
参考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
any
和 all
用于对许多标量参数进行 OR 和 AND 运算。
Syntax
用于运算符优先级。
bitwAnd
用于整数向量的按位版本。
相关用法
- R Last.value 最后计算的表达式的值
- R La_version 拉帕克版本
- R La_library 拉帕克库
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
- R rank 样本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 将文本推回连接
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R invisible 将打印模式更改为不可见
- R noquote “无引号”字符串打印类
- R warning 警告信息
- R rapply 递归地将函数应用于列表
- R basename 操作文件路径
- R with 评估数据环境中的表达式
- R formals 访问和操纵形式参数
- R icuSetCollate 按 ICU 设置整理
- R search 给出 R 对象的搜索路径
- R Defunct 将对象标记为已失效
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Logical Operators。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。