dplyr::arrange(v1.1.0)返回意外结果,是否为设计或待修复Bug?
dplyr::arrange 1.1.0版本排序变化说明
这是设计变更,不是bug,不会被修复。
dplyr 1.1.0对字符列的排序逻辑做了调整:
- 旧版本(1.0.10及之前)默认采用不区分大小写的字母序排序,所以你的示例会得到
aa, Anslag, BB, bb的结果。 - 新版本1.1.0默认遵循系统区域设置(locale)的排序规则,若你的系统locale为C(常见默认设置),会严格按字符ASCII码值排序——大写字母ASCII码小于小写字母,因此出现
Anslag, BB, aa, bb的结果。
如果需要恢复旧版本的排序行为,可以在arrange()里显式指定规则:
# 不区分大小写排序,匹配旧版本行为 dplyr::arrange(c, stringr::str_sort(a, ignore_case = TRUE)) # 或者沿用base::sort的旧逻辑 dplyr::arrange(c, base::sort(a, method = "shell"))
内容的提问来源于stack exchange,提问作者martinlj
相关产品推荐
相关产品推荐

