如何在本地化系统中获取R的英文错误提示
解决RMarkdown Vignette中错误提示的语言切换问题
这里有几个不用修改系统语言就能拿到英文错误提示的实用办法:
1. 临时切换R会话的语言环境
在你的vignette开头或者目标代码块前,加入一行设置环境变量的代码,临时把当前R会话的语言改成英文,不会影响系统设置:
Sys.setenv(LANG = "en")
之后运行你的错误代码示例,就能得到标准的英文错误提示non-numeric argument to binary operator。渲染完vignette后,这个设置只会在当前R进程里生效,关闭R就自动恢复。
2. 手动捕获错误并指定输出文本
如果只想针对这一段代码控制错误提示,可以用tryCatch包裹代码,直接输出你想要的英文错误:
listofnumbers <- as.list(1:4) tryCatch({ listofnumbers[2] + listofnumbers[3] }, error = function(e) { stop("non-numeric argument to binary operator", call. = FALSE) })
这种方法完全不受系统语言影响,精准控制单个代码块的错误输出内容。
3. 自定义knitr错误钩子替换文本
如果你需要批量处理多个德语错误提示,可以修改knitr的error钩子,把捕获到的德语错误文本替换成英文。比如针对你遇到的这个错误,钩子代码如下:
knitr::knit_hooks$set(error = function(x, options) { # 把对应的德语错误提示替换为英文 x <- gsub("nicht numerisches Argument für binären Operator", "non-numeric argument to binary operator", x) # 保持knitr默认的错误代码块格式 paste0("```\n", x, "\n```") })
把这段代码放在vignette的开头,后续所有代码块的对应德语错误都会被自动替换成英文。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

