使用qwraps2包遇UTF-8无效错误:RStudio中Rmarkdown代码块运行异常
问题分析
你遇到的Error in sub(re, "", x, perl = TRUE) : input string 6 is invalid UTF-8错误,核心原因是:直接在R控制台运行代码时,qwraps2的markdown渲染模式无法正确处理±这类特殊UTF-8字符;而Rmarkdown编译PDF时,会自动将markdown语法转换为LaTeX格式,编码适配过程掩盖了这个问题。
解决方案
方法1:临时切换渲染模式
直接运行代码时,将qwraps2的渲染模式切换为latex,避开UTF-8字符冲突:
# 保存原设置 orig_opt <- options()$qwraps2_markup # 切换为latex模式(适配控制台输出) options(qwraps2_markup = "latex") descriptive_table <- summary_table(Considered_Variables, descriptive_analysis ) print(descriptive_table, caption = " Descriptive Table", rtitle = "Variables", cnames = c("Values")) # 恢复原设置(如需回到markdown模式用于Rmarkdown编译) options(qwraps2_markup = orig_opt)
方法2:替换特殊字符
如果坚持使用markdown模式,把定义里的±替换为纯文本的+/-,消除编码问题:
修改descriptive_analysis中所有变量对应的该行:
"Mean +/- Standard deviation" = ~ qwraps2::mean_sd(female)
方法3:转换为数据框查看
若只是需要查看汇总结果,无需渲染成markdown表格,可将生成的对象转成普通数据框:
# 直接查看数据框格式的汇总结果 as.data.frame(descriptive_table)
额外修正建议
- 代码中存在重复列表键:
"Importance given to attractiveness"出现两次,第二个实际对应sincere_important,建议修改键名(比如改为"Importance given to sincerity"),避免数据覆盖丢失。 - 变量名拼写错误:
intellicence_important应为intelligence_important,ambtition_important应为ambition_important,修正后可避免后续潜在报错。
内容的提问来源于stack exchange,提问作者Bruno Calderon
相关产品推荐
相关产品推荐

