當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R Logic 邏輯運算符

R語言 Logic 位於 base 包(package)。

說明

這些運算符作用於原始向量、邏輯向量和number-like向量。

用法

! x
x & y
x && y
x | y
x || y
xor(x, y)

isTRUE (x)
isFALSE(x)

參數

x , y

rawlogical 或 ‘number-like’ 向量(即類型 double (類 numeric )、integercomplex ),或已為其編寫方法的對象。

細節

!表示邏輯非(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)因為NAs.
在早些時候R版本,isTRUE <- function(x) identical(x, TRUE),有一個錯誤的缺點,例如,對於x <- c(val = TRUE).

數字和複數向量將被強製為邏輯值,零為假,所有非零值為真。對於 !&|xor ,原始向量的處理無需任何強製,這些運算符按位應用(因此 ! 是 1 補碼)。

運算符 !&| 是通用函數:可以單獨為它們編寫方法,也可以通過 Ops (或 S4 Logic ,見下文)組通用函數編寫方法。 (有關如何計算調度的信息,請參閱Ops。)

NA 是有效的邏輯對象。當 xy 的組件是 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.

也可以看看

TRUElogical

anyall 用於對許多標量參數進行 OR 和 AND 運算。

Syntax 用於運算符優先級。

bitwAnd 用於整數向量的按位版本。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Logical Operators。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。