RStudio 中的 R Markdown

作者: 蛙声一爿 | 来源:发表于2015-05-16 21:35 被阅读21734次

    备份自:http://blog.rainy.im/2015/05/16/rmarkdown-in-rstudio/

    RStudio 是 R 语言的一款开源的 GUI 软件,可以让“用不起Matlab只好用R”的用户体验到很像 Matlab 一样的开发环境,包括变量的显示、package 的基本操作、帮助文档等一系列图形界面。RStudio 另一个隐藏功能是可以当做 Markdown 编辑器来用(R Markdown),可以根据数据处理结果快速生成报告文档,这一功能主要通过 Package Knit 及相关组件完成。R Markdown 的两大特别之处,一是通过 Pandoc 将 Markdown 转化成 LaTex,再由强大的 LaTex 转换成 HTML、PDF、Word,理论上来说借助 LaTex 可以生成学术论文、期刊杂志、数据报告等规范格式的文档;另一大特点是整合了 R 语言的环境,可以在 Markdown 语法中 code block 直接执行 R 语言代码并将结果插入文档。

    安装 package rmarkdown

    可以通过 RStudio 中的新建按钮创建 R Markdown 文件,此时可能提示安装 rmarkdown 包:

    install.packages(rmarkdown)
    

    创建文档可以选择文档标题、作者以及将要输出的文档格式等,这些也可以在之后更改:

    New R Markdown infoNew R Markdown info

    第一次按 Kint PDF(或 Kint HTML)时可能出现错误:

    Knit PDF : pandoc document conversion failed with error 43
    

    可以通过安装 github 上最新的版本解决:

    install.packages("devtools") # 如果以前没有安装 devtools 包
    devtools::install_github("rstudio/rmarkdown")
    

    第二个问题当是文档中有中文的情况,可能提示:

    ! Package inputenc Error: Unicode char \u8:年 not set up for use with LaTeX.
    Try running pandoc with --latex-engine=xelatex.
    

    如果有中文,LaTex 引擎需要选择为 xelatex,可以通过下图的方式进行更改:

    R Markdown xelatexR Markdown xelatex

    或者直接在文档头信息中加入:

    output:
      pdf_document:
        latex_engine: xelatex
    

    这样就可以正常输出为 PDF 文档了,但是会发现所有的中文全部都是空白,这个主要是 LaTex 的配置问题,中文需要中文字体来渲染,可以通过在文件头中引入 LaTex 文件进行配置:

    outputs:
      pdf_document:
        includes:
          in_header: header.tex
        latex_engine: xelatex
    

    其中 header.tex 可以是:

    \usepackage{xeCJK}
    \setCJKmainfont{楷体}  % 字体可以更换
    \setmainfont{Georgia} % 設定英文字型
    \setromanfont{Georgia} % 字型
    \setmonofont{Courier New}
    

    更多详细配置可以参考官方文档

    在 code block 中选择展示 R 语言执行结果

    具体使用方式见下图:

    rmarkdown cheat sheetrmarkdown cheat sheet
    # {r, comment='# >', collapse=TRUE}
    a <- 1
    typeof(a);mode(a);class(a)
    

    输出结果为:

    a <- 1
    typeof(a);mode(a);class(a)
    # > [1] "double"
    # > [1] "numeric"
    # > [1] "numeric"
    

    甚至可以直接生成图像并插入文档(当然结果这里是看不到了,可以在生成的 PDF 或 HTML 中看到绘图结果):

    x <- seq(from = -5, to = 5, by = 0.01)
    y <- dnorm(x)
    plot(x, y)
    

    本文内容在 R Markdown 中生成的 PDF 部分效果如下:

    Rmarkdown output PDFRmarkdown output PDF RMarkdown plotRMarkdown plot

    参考:

    1. Github issues

    相关文章

      网友评论

      本文标题:RStudio 中的 R Markdown

      本文链接:https://www.haomeiwen.com/subject/neekqttx.html