R语言中两个字符串比较大小的运行逻辑是什么?
R语言字符串比较逻辑说明
你遇到的比较结果是R语言默认字符串比较规则的正常表现,底层逻辑如下:
- 字符串默认按字典序逐位对比:从第一个字符开始依次匹配两个字符串的对应位置字符,找到第一个不相同的字符后,直接以这两个字符的大小关系作为整个字符串的比较结果,后续字符不再参与计算。
- 单个字符的大小由当前系统环境的字符编码规则决定:常用的UTF-8、ASCII编码中,英文字母严格按照a~z的顺序升序排列,字母出现顺序越靠后,对应的编码数值越大。
你给出的示例中,'dog'和'cat'对比第一个字符就出现差异:字母d的编码值大于c,所以'dog' > 'cat'返回TRUE,反之'cat' > 'dog'返回FALSE。
补充两个常见场景验证规则:
- 前几位字符相同的情况:
'cat' > 'car'返回TRUE,前两位字符c、a完全相同,第三位字符t的编码大于r,因此前者更大。 - 长度不同的情况:如果短字符串所有字符和长字符串对应位置完全一致,那么短字符串更小,比如
'cat' < 'cater'返回TRUE。
如果需要排除系统locale排序规则的影响,强制按字符编码的原始码点比较,可以使用stringi包的stri_cmp函数实现。
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

