用R自动生成pdf文件 - michael_YM

时间:2024-03-11 22:21:59

用R自动生成pdf文件

1)安装R程序包knitr,写markdown,需要安装生成pdf的工具MikTex,RTools(RTools 需要安装吗?待验证)

安装 R package — rmarkdown,

 

Yaml Header参数

this is yaml header 

生成pdf的Rmd文件中,设定 "output: pdf_document"

YAML header将决定如何展现你的 .Rmd file.文件,用两个 --- 包围,如下图:

---
title: "test"
author: "dym"
date: "2017年10月10日"
output: pdf_document
---

output: 选择其中一种类型的文件类型,html_document   pdf_document   word_document

 

Rmd插入R语句

knitr包能够兼容markdown语法,尤其包含执行R代码的能力,Rmd文件中插入R语句:

echo=FALSE  表示不打印命令语句

eval=FALSE   表示不显示运行结果

```{r pressure, echo=FALSE, eval=FALSE}
plot(pressure)
```

note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

 

改变plot生成的图片大小的参数,fig.width=11,11为英寸值,改变fig.width,可改变生成的图片的宽度

 

行间代码

嵌入R代码到文本当中,在代码的两侧用点’来包围,如下图:

Two plus two equals `r 2 + 2`.

显示结果为:

Two plus two equals 4.

 

 Render文件格式转换

rmarkdown::render() 将RMD文件转换为html 或 pdf文件:

library(rmarkdown)
render(\'test2.Rmd\', pdf_document(latex_engine = \'xelatex\'), output_file = \'test_haha.pdf\')
render(\'1-example.Rmd\', output_file = \'haha.html\')

 

knitr  markdown  转换成pdf   

http://www.dataguru.cn/thread-208296-1-1.html

 

中文字符的问题

在rmd文件中,如果有中文字符,运行文件的时候会报错;

如果rmd文件中打印一个变量,变量的值是中文字符,转换为pdf文件时也是乱码;用plot画图时,如果坐标的刻度标签或标题(参数main)有中文字符,输出在pdf文档中也是乱码;

1)对于输出变量是中文的情况:

可以通过在rmd的yaml文件中加入下面字段,实现在pdf中正常输出中文:

 header-includes:

- \usepackage{xeCJK}

2)对于横坐标的刻度标签含中文的情况,解决方案是在plot函数中,设置xaxt = \'n\',用axis函数设置坐标刻度,用text函数加上刻度标签,标签中不能含中文字符,这样横坐标就可以正常显示了;