English · PDF 225
前面我使用 str_to_lower() 将文本转换为小写。你也可以使用 str_to_upper() 或 str_to_title()。然而,大小写转换比乍看起来要复杂,因为不同语言有不同的大小写转换规则。你可以通过指定区域设置(locale)来选择使用哪套规则:
# 土耳其语有两个 i:带点和不带点,并且 # 它们的大写规则不同: str_to_upper(c("i", "ı")) #> [1] "I" "I" str_to_upper(c("i", "ı"), locale = "tr") #> [1] "İ" "I"
区域设置以 ISO 639 语言代码指定,这是一个两到三个字母的缩写。如果你还不知道你的语言的代码, Wikipedia 上有一个很好的列表。如果将区域设置留空,它将使用操作系统提供的当前区域设置。
另一个受区域设置影响的重要操作是排序。R 基础包的 order() 和 sort() 函数使用当前区域设置对字符串排序。如果你希望在不同计算机上获得一致的行为,你可能需要使用 str_sort() 和 str_order(),它们接受一个额外的区域设置参数:
x <- c("apple", "eggplant", "banana") str_sort(x, locale = "en") # 英语 #> [1] "apple" "banana" "eggplant" str_sort(x, locale = "haw") # 夏威夷语 #> [1] "apple" "eggplant" "banana"