RMarkdown中文报错的问题【解决】

今天学习RMarkdown(Win10笔电),结果因为里面有中文就报错了。我试了yaml的header有中文和正文有中文都会报错,搜索看到文件存放路径含中文也会报错。

解决
1)查询语言设置是否中文
Sys.getlocale()

[1] "LC_COLLATE=Chinese (Simplified)_China.936;LC_CTYPE=Chinese (Simplified)_China.936;LC_MONETARY=Chinese (Simplified)_China.936;LC_NUMERIC=C;LC_TIME=Chinese (Simplified)_China.936"

显然不是语言设置的问题

2)根据搜索到的结果,安装了rticles包(建议直接从github安装)
顺便:devtools使用代理需要设置:
library(httr)
set_config(
  use_proxy(url="127.0.0.1", port=1080) #使用本机代理
)

但是使用Ctex document模板在kniter渲染的时候还是报错了

3)根据Yihui Xie的建议,更新以下两个包到最新版本
devtools::install_github(c('rstudio/rmarkdown', 'yihui/tinytex'))
tinytex::install_tinytex()

更新后重启R,用以下命令确认是否安装上tinytex
tinytex:::is_tinytex()

然后就可以正确输出中文了。


*********************追加********************

rmarkdown::render('1.Rmd')  中文乱码问题

由于上述问题解决之后,kniter渲染html已经能正常显示中文,所以就是Rmd文件编码的问题。把Rmd文件另存为GB2312编码格式,就能正常显示中文了。

后来查到Yihui Xie说:
如果文件编码是 UTF-8,那么需要 rmarkdown::render('你的文件.Rmd', encoding = 'UTF-8')

评论

此博客中的热门博文

R包编写详细教程

Hadley Wickham的R语言编写规范