当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。