R Markdown Snippets

格式说明:

  1. 三级标题作为代码段标题;
  2. 代码段标题下附加段落:
    1. 功能性说明;
    2. 使用说明;
  3. 段落后放置代码块。

项目中设置R包CRAN镜像

  1. getOption('repos') 获取当前cran站点;
  2. identical判断对象是否相等,unname 去除向量分量名称;
  3. options(repos = r) 设置cran站点;
1
2
3
4
5
6
local({
r = getOption('repos')
if (!length(r) || identical(unname(r['CRAN']), '@CRAN@'))
r['CRAN'] = 'https://cran.rstudio.com'
options(repos = r)
})

逐个检查依赖包并进行安装

  1. 依赖包名称放在向量中;
  2. system.file(package = <name_char>) 获取拓展包的目录。通过目录是否为空字符串来判断是否安装了该包;
  3. lapply 将函数应用到拓展包名称向量中;
1
2
3
lapply(c('DT', 'formatR', 'svglite', 'rticles'), function(pkg) {
if (system.file(package = pkg) == '') install.packages(pkg)
})

对于只能依赖 github 进行安装的扩展包,使用带名称的字符向量进行记录,然后使用类似的方法安装:

1
2
3
4
githubs <- c('citr' = 'crsh/citr')
lapply(names(githubs), function(pkg) {
if (system.file(package = pkg) == '') remotes::install_github(githubs[pkg], upgrade = FALSE)
})

通过 identical 判断不同输出格式下是否输出

  1. identical 判断对象是否相等;
  2. knitr::pandoc_to() 获取本次编译输出的文档格式;
  3. include参数控制改代码块是否输出 。
1
2
3
```{r fig.align='center', echo=FALSE, include=identical(knitr:::pandoc_to(), 'html'), fig.link='https://github.com/rstudio/bookdown'}
knitr::include_graphics('images/logo.png', dpi = NA)
```

文字右(左)对齐

  1. 设置 type='flushright'将代码块内的文字进行页面上的右对齐,类似地,type='flushleft' 为左对齐;
  2. 设置 HTML 输出格式时,右对齐语段的标签 html.tag='p'
1
2
3
4
```{block2, type='flushright', html.tag='p'}
Yihui Xie
Elkhorn, Nebraska
​```

Bookdown 创作中文书籍

主要是导出 PDF 时的相关配置,关键在于是否引入 ctex 宏包。

需要注意,影响 PDF 编译的配置散落在 RStudio IDE 各处,容易忽略的是 Project Options -> Sweave -> PDF Generation -> Typeset LaTeX into PDF using,该处需要使用 xelatexpdflatex 能用,但是会出一些问题。

方法一:

1
2
3
4
5
6
# 安装 tinytex
# tinytex::install_tinytex()
documentclass: ctexbook
output:
pdf_document:
latex_engine: xelatex

方法二:

1
2
% in preamble.tex
/usepackage{ctex}
1
2
3
4
5
6
# 安装 tinytex
# tinytex::install_tinytex()
documentclass: book
output:
pdf_document:
latex_engine: xelatex