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


R Comparison 關係運算符


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

說明

允許比較原子向量中的值的二元運算符。

用法

x < y
x > y
x <= y
x >= y
x == y
x != y

參數

x, y

原子向量、符號、調用或已為其編寫方法的其他對象。

細節

二進製比較運算符是通用函數:可以單獨為它們編寫方法,也可以通過 Ops 組通用函數編寫方法。 (有關如何計算調度的信息,請參閱Ops。)

字符向量中的字符串比較是使用所使用的語言環境的整理順序在字符串內按字典順序進行的:請參閱locales。區域設置的整理順序,例如‘⁠en_US⁠' 通常與 ' 不同⁠C⁠’(應該使用 ASCII)並且可能會令人驚訝。謹防製作任何關於整理順序的假設:例如愛沙尼亞語Z介於ST,並且排序規則不一定是逐個字符的 - 在丹麥語中aa作為單個字母排序,之後z。威爾士語ng可能是也可能不是單個排序單元:如果是,則如下g。某些平台可能不考慮區域設置,並且始終按 8 位區域設置中的字節數字順序排序,或者對於 UTF-8 區域設置按 Unicode code-point 順序排序(對於相同語言,可能不會按相同順序排序)不同的字符集)。非字母(空格、標點符號、連字符、分數等)的排序更成問題。

字符串可以與不同標記的編碼進行比較(參見 Encoding ):在比較之前將它們轉換為 UTF-8。

原始向量實際上不應被視為具有順序,但使用字節表示的數字順序。

至少其中之一xy必須是原子向量,但如果另一個是列表R嘗試將其強製轉換為原子向量的類型:如果列表由長度為 1 且可以強製轉換為正確類型的元素組成,則此操作將會成功。

如果兩個參數是不同類型的原子向量,則一個參數被強製轉換為另一個參數的類型,優先級(遞減)順序為字符、複數、數字、整數、邏輯和原始。

缺失值 ( NA ) 和 NaN 值甚至被視為不可比較,因此涉及它們的比較將始終導致 NA 。當比較字符串並且字符串在當前排序規則區域設置中無效時,也可能會導致缺失值。

諸如符號和調用之類的語言對象在比較之前被解析為字符串。

一個邏輯向量,指示逐個元素比較的結果。較短向量的元素根據需要被回收。

數組或時間序列等對象可以通過這種方式進行比較,前提是它們是一致的。

S4方法

這些運算符是 S4 Compare 組泛型的成員,因此可以使用參數 c(e1, e2) 單獨為它們編寫方法,也可以為泛型組(或 Ops 組泛型)編寫方法。

注意

請勿使用 ==!= 進行測試,例如在 if 表達式中,您必須獲取單個 TRUEFALSE 。除非您完全確定不會發生任何異常情況,否則應使用identical 函數。

對於數值和複數值,請記住 ==!= 不允許分數的有限表示,也不允許舍入誤差。將 all.equalidenticalisTRUE 一起使用幾乎總是更好;請參閱示例。 (這也適用於其他比較運算符。)

這些運算符有時被稱為函數,例如`<`(x, y) :請參閱Ops 中如何完成argument-matching 的說明。

例子

x <- stats::rnorm(20)
x < 1
x[x > 0]

x1 <- 0.5 - 0.3
x2 <- 0.3 - 0.1
x1 == x2                   # FALSE on most machines
isTRUE(all.equal(x1, x2))  # TRUE everywhere


# range of most 8-bit charsets, as well as of Latin-1 in Unicode
z <- c(32:126, 160:255)
x <- if(l10n_info()$MBCS) {
    intToUtf8(z, multiple = TRUE)
} else rawToChar(as.raw(z), multiple = TRUE)
## by number
writeLines(strwrap(paste(x, collapse=" "), width = 60))
## by locale collation
writeLines(strwrap(paste(sort(x), collapse=" "), width = 60))

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Collation of character strings is a complex topic. For an introduction see https://en.wikipedia.org/wiki/Collating_sequence. The Unicode Collation Algorithm (https://unicode.org/reports/tr10/) is likely to be increasingly influential. Where available R by default makes use of ICU (https://icu.unicode.org/) for collation (except in a C locale).

也可以看看

Logic 關於如何組合比較結果,即邏輯向量。

factor 用於帶有因子參數的行為。

Syntax 用於運算符優先級。

capabilities 用於確定 ICU 是否可用,icuSetCollate 用於在可用時調整字符串排序算法。

相關用法


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