1 簡介
R Markdown
R Markdown
的基本語法與 Markdown
基本一致 [使用方法],最核心的區別是:
寫入代碼區域的代碼能在編譯的時候同時生成相應的圖、表和運算結果,省去了保存和插入的過程。
能保存為HTML
、WORD
和
本文關於
- 在
Windows 10
系統下配置R Studio
的R Markown
,導出PDF,Word和HTML。 - 安裝Pandoc和Latex。
- Windows: MiKTeX (完整版)
- Mac OS X: TexLive 2013 (完整版)
2 安裝
如果已經安裝好了R Studio和R。下一步需要做的包括:
- 安裝Pandoc和你的系統需要的LaTex。Pandoc還好,LaTex完整版下了好久。
- 更改Global Setting,告訴R Studio你用什么來編譯R Markdown里面的代碼。
- 下載一系列相關的包(當你新建Markdown文檔和保存的時候R Studio會自動提醒你完成)。
具體過程都沒寫,很簡單,過程請參考這里
其實MiKTeX裝得很懵逼。
R給的地址是:http://miktex.org/2.9/setup
MiKTex給的地址是:https://miktex.org/download
我也不知道上面兩個地址區別是什么,一開始就下了R給的地址里的Net installer
。
運行了之后下了2個多G的東西,可是貌似還是沒有真的安裝,然后又運行了一次Net Installer,這次讓我選了安裝地址。
然后關了一次R Studio就找到LaTex了。
3 設置 YAML
完成對R Studio的全局配置后,對每個Rmd文件(R markdown)在最開頭兩條線之間進行設置才是更重要的。這個部分叫做 YAML:
---
title: "標題"
author: "作者"
output:
word_document: default
html_document: default
pdf_document:
includes:
in_header: header.tex
keep_tex: yes
latex_engine: xelatex
---
## 4 如何編輯 Rmd 文檔
編輯的過程總結起來就是
1 我添加的是普通的文字。
- 那就按照Markdown寫吧,你看到過的功能R都支持。
2 我添加的是代碼。
- 那就放到
代碼區域
里面去,和Markdown的代碼標記不太一樣,多了{}
。
```{r}
code
```
3 然后在 {}
里告訴 R Studio
你希望顯示什么:
- 我只想顯示代碼
echo = FALSE, eval = FALSE
- 我只想顯示結果
echo = FALSE, eval = TRUE
- 我想要代碼+編譯結果
echo = TRUE,eval = TRUE
4 如果是在行內中添加代碼,沒有{}
`r 2+ 2`
##5 導出 從Rmd格式可以導出為三種格式,用[Pandoc](http://www.pandoc.org/installing.html)實現。 1. Word 2. HTML 3. PDF(額外需要LaTex支持,並且對中文的支持需要額外的設定)。
步驟
- 在YMAL里面設置
output: pdf_document
,或者word_document, html_document
。 - 設定好了之后三種導出的方法都一樣,點擊代碼窗口上面的藍色毛線團標記
。
knit本身是編織,所以就是把代碼織成文本吧。
關於PDF
- 首先為了支持中文,需要
Global Setting
里選xelatex
作為LaTex引擎,也可以在YAML
加入說明。 - 然后對LaTex進行配置。在
YAML
里加入header.tex
:
outputs:
html_document: default
word_document: default
pdf_document:
includes:
in_header: header.tex
keep_tex: yes
latex_engine: xelatex
注意正確的縮進和冒號。
以上意思是,輸出為html,word和pdf。html和word為默認設置。pdf設置包括,in_header,keep_tex和latex_engine。
如果一個設置還沒到具體的內容,它緊接的是冒號,換行后需要多縮進兩個空格再開始。
如果已經指向明確的內容,結束沒有冒號,換行之后保存和上行一樣的縮進。
header.tex
需要和你的Rmd文檔放到一個路徑,其中內容是:
\usepackage{xeCJK}
\setCJKmainfont{Microsoft Yahei} % Chinese font
\setmainfont{Georgia} % English font
\setromanfont{Georgia} %
\setmonofont{Courier New} % the font used for code
\parindent 2em % indentation
以上代碼從別人那里copy來的時候,
%
后面注釋用的中文。可是在運行的時候R報錯,原因應該和下面參考里說的一樣,中文亂碼。
存成UTF-8 就沒問題了。可是我不會,還是刪了中文來的快。
錯誤提示:pandoc document conversion failed with error 1
更詳細說明參考這里
6 實時更新設置
編輯的同時看到結果,方法。
## 參考資料 * 官方說明[R Markdown Cheatsheet](https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf)。 * 另一個寫的很好的[配置說明](http://blog.rainy.im/2015/05/16/rmarkdown-in-rstudio/)。其中提醒需要安裝或更新 `devtools` 包。
## 寫在最后 R + R Studio + 我 我的正職應該是個搞生態學的(吧?)。計算機方面,初中的時候家里有了一個386,覺得這個東西雖然長得像電視,可是啥也干不了...還經常藍屏。高中學的時候學了DOS,學會的是怎么用命令行新建文檔,可是屏幕還是沒有電視好看,不過可以玩游戲了,只是經常在大場面卡死,網絡版玩兒了下也放棄了,太卡。后來到了大學,計算機技術終於正真開始侵入到我這種小渣渣的生活了。那時候有了淘寶,網銀,我也和大家一起考了C語言,可是我貌似就記得有個 `for`。嗯,說這些想說明,編程這件事情上,我只是一個小小的學渣。可我是個搞科學的,貌似我應該特別會統計學,還特別熟計算。
直到有一天,我遇到了 R
這個坑了我也救了我的計算機語言。據估計只有1%的人使用R語言編程。這群人的背景有個共同點就是他們都是搞科學的。 在這群搞科學的人手里發揚光大了之后,R語言能完成了事情可謂百(za)花(qi)齊(za)放(ba)。誰都能隨便寫寫包,然后誰都能拿來用。對我來說,沒有R就沒有沒有畢業,可是在接觸了它6年之后,我才發現我從來沒有把它當做一個計算機語言來用。我也沒有想過每天都打開的R Studio到底是啥。對我來說,R只是一個能幫我做圖,做方差分析,做PCA的工具。我需要的是找到什么人已經解決的途徑,而不是怎么樣自己創造一個途徑。
最近自學了 Perl
和 Python
之后更強烈的覺得,當初 R
的打開方式雖然讓我能迅速地解決科研中的應用問題,可是也完全沒有機會看到它作為計算機語言的可能性。就這么用下去,我相當於永遠等着別人來解決我現在的問題,沒有辦法解決自己的問題。語言存在的價值在於交流和創造,學人類語言的首要目的是交流,而學計算機語言的首要目的應該是創造(Development)。
來cnblog幾天,發現R語言在這兒關注的人的確很少,不過前幾天看到一個關於推廣 Awesome R!的帖子,想必R也會成為大家的第三,第四個語言的選擇吧。
之前,在兩台電腦上設置好了Sublime+Markdown+Snippet,現在回到主要工作環境R Studio
,使用它提供的 R Markdown
。