未设置区域设置时R为何显示德法混合错误消息?
R在macOS Monterey下显示混合语言错误消息的问题
我在macOS Monterey系统上从CRAN安装了R 4.2.1(arm64版本),系统首选语言设置为英文,但R却显示德语与法语混合的错误消息,这导致测试和CI流水线出现故障:
base::xyz # Fehler: Objekt 'xyz' nicht gefunden utils::xyz # Fehler: 'xyz' n’est un object exporté depuis 'namespace:utils'
我未手动设置特定区域设置(尤其确认了LC_MESSAGES的设置):
$ locale LANG="" LC_COLLATE="C" LC_CTYPE="UTF-8" LC_MESSAGES="C" LC_MONETARY="C" LC_NUMERIC="C" LC_TIME="C" LC_ALL= $ env | grep 'LANG\|LC' LC_TERMINAL_VERSION=3.4.16 LC_CTYPE=UTF-8 LC_TERMINAL=iTerm2
R自身检测到的区域设置如下:
lapply(.LC.categories, Sys.getlocale) |> structure(names = .LC.categories, class = 'simple.list') _ LC_ALL C/UTF-8/C/C/C/C LC_COLLATE C LC_CTYPE UTF-8 LC_MONETARY C LC_NUMERIC C LC_TIME C LC_MESSAGES C LC_PAPER LC_MEASUREMENT
此外,该问题仅出现在错误消息显示中:解析或格式化数字、日期时,R的行为不受区域设置影响。
我可通过显式设置LC_MESSAGES或LANG来临时解决此问题,例如:
$ LANG=en_GB.utf-8 Rscript -e 'utils::foo' Error: 'foo' is not an exported object from 'namespace:utils'
但我不理解为何需要额外设置——明明LC_MESSAGES已经设为C,却仍出现混合语言的错误消息,也不清楚R的这种异常区域设置偏好来自何处。
补充信息:我当前位于瑞士,公网IP地址归属瑞士,电脑购自瑞士苹果商店,但系统偏好设置中语言已设为英文(默认情况下shell似乎未识别此设置)。另外,我通过命令行启动R,未使用GUI。
内容的提问来源于stack exchange,提问作者Konrad Rudolph
相关产品推荐
相关产品推荐

