R語言-Knitr包的詳細使用說明


R語言-Knitr包的詳細使用說明

by 揚眉劍 來自數盟【總舵】 群:321311420

1.相關資料

我的學習都是從以上三個資源中獲取。所以特意在文件夾中把1,2轉換為PDF, 希望大家仔細閱讀。

文件夾中還有一個knitr-refcard.pdf,里面包括了一些常用的參數

2.環境

我們需要的是安裝過knitr包的RStudio。然后在Tools-option-Sweave-weave Rnw files using -選擇knitr (操作演示),新建一個test.Rmd然后后面的內容都在其中示范。

3.1 Markdown 是什么,如何寫Markdown

Markdown 是一種輕量級標記語言。類似HTML,但是比html簡單的多,我在文件夾中放了一個markdown的語法說明。 大家具體可以用一段時間學會。我們這里知道這么幾點就可以了。標題,一個#后面跟一個空格代表一級標題,2個## 后面跟一個空格代表二級標題。

  • how are you 斜體
  • how are you 加粗

具體的語法看文件夾中的 Markdown語法說明(簡體中文版)

3.2 在Markdown中寫R代碼

首先我們要新建一個Rmd的文件,或者在File-new file-R markdown,新建一個Rmd的文件。操作 Markdown中的R語言的代碼是三個后引號(也就是在鍵盤左上角,Esc下面的那個鍵)然后后面加上{r}開始,{r,} 大括號中,r字母后面可以加入不同的參數。然后以三個后引號結束。當然都是在英文狀態下輸入的。

a = 1:10  #**代碼的運行** Run 或者Ctrl+Enter
b = 11:20
a  #代碼的注釋用#號開頭
##  [1]  1  2  3  4  5  6  7  8  9 10

3.3 是否計算代碼塊參數 eval

是否計算代碼塊中內容的選項。 兩個選項:TURE或者FALSE

# ```{r,eval=FALSE}
a
##  [1]  1  2  3  4  5  6  7  8  9 10
b
##  [1] 11 12 13 14 15 16 17 18 19 20

eval是計算代碼塊中的內容。當eval=TRUE,計算,所以會在html中會顯示代碼運行的結果,反之,不計算,不顯示。

還可以是數字選項,我們看一下下面兩段代碼的區別

## # ```{r,eval=C(1)} ```{r,eval=-c(1)} #前面加一個負號,表示排除的意思
a
##  [1]  1  2  3  4  5  6  7  8  9 10
## b

也就是可以用eval=c()來控制那些行代碼運行,那些不運行。

3.4 文本輸出相關參數

echo 兩個選項:TRUE或FALSE,或者是數字,用來控制那些行輸出,那些行不輸出。

# ```{r,echo=FALSE} ```{r,echo=c(1)} ```{r,echo=-c(1)}
a
##  [1]  1  2  3  4  5  6  7  8  9 10
b
##  [1] 11 12 13 14 15 16 17 18 19 20

對比上面兩個的結果,我們可以看出,echo是控制代碼輸出的,但echo=TRUE的時候,在html中是輸出代碼的,當echo=FALSE的時候是不輸出代碼的。 warnings
error
message

以上都有兩個選項,也就是假如代碼中有警告的信息,報錯的信息,或者其他的信息,在 最后的報告中是否顯示,TURE是顯示,FALSE是不顯示。

3.5 代碼修飾參數

3.5.1 tidy

# ```{r,tidy=FALSE} 首先安裝formatR這個包 install.packages('formatR')
a = 100
b = 100

這里還有一個tidy.opts

# ```{r,tidy.opts=list(keep.blank.line=FALSE)}
a = 100
b = 100

3.5.2 prompt

這個就是是否顯示在R默認窗口中的>, 一般來說,FALSE是默認選項。沒人希望在每一行都輸出>

# ```{r,prompt=TRUE}
a
## [1] 100

3.5.3 comment

默認情況下我們生成HTML格式的文件,所有的運行結果前面都有兩個##號(演示)

在這里我們可以通過comment選項改變,當然這里一般不用改變,沒有什么意義。前面是#號,可以在我們復制代碼的時候, 這里的結果不會被運行。

a
~~~~ [1] 100

3.5.4 highlight 代碼高亮選項

我沒有發現什么變化,大家自己探索一下。

# ```{r,highlight=FALSE} install.packages('highlight')
data = c("1", "2")
for (i in a) {
    c = i
}

3.6 緩存參數 cache

cache是代碼塊計算得到的緩存,可以是True也可以是False。默認為False,也就是每一次生成knit HTML,都會重新計算里面的每一個代碼塊。但是如果我們的代碼非常的復雜。如果我們不希望每一次都重新運行,所有的代碼塊,那么我們可以設置cache為TRUE。 也就是,當代碼塊第一次運行的時候會把結果保存下來,然后當我們生成HTML的時候,就不用再重新計算,而是直接把前面保存的結果哪里,當程序復雜度高的時候,這個會節約 一定的時間。

3.7 Plot 作圖參數

3.7.1 fig.width fig.height

# ```{r,prompt=TRUE}
a
## [1] 100

3.7.2 fig.show = 'asis' 'hold' 'animate' 'hide'

  • asis:表示在哪里生成就在哪里顯示
  • hold:的意思是把圖片放到代碼塊以后
  • animate: 如果代碼塊中有生成幾幅圖片,可以將幾張圖片生成動畫。

用animate的要點是首先要安裝:animation包。 然后http://ffmpeg.zeranoe.com/builds/ 從這里下載你需要的ffmpeg,然后直接解壓到當前文件夾,比如我解壓以后,重命名為ffmpeg,然后放到c:\Program Files\
然后把C:\Program Files\ffmpeg\bin放入環境變量。 然后這個選項就可以用了。

1: 由於ffmpeg的最新版本出來的動畫,不一定在所有的瀏覽器都能播放,所以我在文件中放了一個ffmpeg.exe 這個是11年的版本, 用起來沒有問題。

2:還有一個問題就是,如果你安裝過其他的軟件,里面自帶的ffmpeg.exe,那么可能你的路徑中的ffmpeg就不起作用了,查看ffmpeg位置 的命令行:Sys.which(“ffmpeg”),這樣可以查看當前使用的ffmpeg是在什么地方。

3:然后提供一個最簡單的辦法,直接講我的文件夾中的ffmpeg扔到system32文件夾中就沒有任何問題了,也不用配置路徑了。

4:關於並行圖片生成的順序,非循環方式生成圖片順序問題,待驗證

當生成動畫的時候還有一個參數interval=2 可以設置兩個圖片之間的間隔。

所有參數都在網站有詳細的解釋,我也有可以有理解不對的地方,歡迎大家指正。謝謝。 http://yihui.name/knitr/options

4.行內代碼

我們如果想在行文中直接嵌入R的代碼也非常的方便,是以后引號加r開頭,然后后引號結尾。比如400。 非常的方便。

5.生成HTML

6.寫Latex

7.致謝

最應該感謝的當然是包的制作者-謝益輝,然后RStudio也是很不錯的。 同時,本文還參考了魏太雲的PPT,同樣非常感謝。在文件夾中一並附上。請大家自行參考。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM