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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。