使用str_to_upper函数转换字符串为西班牙语大写失败问题排查
问题分析与解决方案
核心问题
- 词汇本身为英文:你要转换的
gender列内容是英文词汇("Male"/"Female"),str_to_upper仅负责将字符串转为大写,不具备语言翻译功能,所以结果自然还是英文大写形式。 - Locale参数错误:西班牙语对应的正确locale代码是
"es"(而非你使用的"sp"),该参数用于适配特定语言的字符规则(比如西语带重音字母的大写转换),而非翻译词汇。
解决方案
1. 正确处理西语字符的大写转换
如果是对西班牙语原生字符(比如带重音的名字)进行大写转换,使用正确的locale参数即可:
library(stringr) # 西语带重音字符的大写转换示例 str_to_upper("jordí", locale = "es") # 输出 "JORDÍ"
2. 将英文性别词汇转为西班牙语大写
若目标是把英文性别翻译成西班牙语并转为大写,需要先替换词汇再执行转换:
library(dplyr) library(stringr) people <- tibble(name = c("Jordi", "Marta", "Laura", "Rodrigo"), gender = c("Male", "Female", "Female", "Male"), age = c(42, 31, 18, 65)) # 替换英文词汇为西班牙语后转大写 people <- people %>% mutate(gender_spanish_upper = case_when( gender == "Male" ~ "hombre", gender == "Female" ~ "mujer", TRUE ~ gender ) %>% str_to_upper(locale = "es")) print(people)
运行后gender_spanish_upper列会得到"HOMBRE"和"MUJER"的结果。
内容的提问来源于stack exchange,提问作者Víctor Molero Troake
相关产品推荐
相关产品推荐

