R語言-Knitr包的詳細使用說明
R語言-Knitr包的詳細使用說明
by 揚眉劍 來自數盟【總舵】 群:321311420
1.相關資料
-
1:自動化報告-謝益輝 https://github.com/yihui/r-ninja/blob/master/11-auto-report.md
-
2:knitr與可重複的統計研究(花絮篇) http://cos.name/2012/06/reproducible-research-with-knitr/
-
3:knitr官網 http://yihui.name/knitr/ 在官網中有謝益輝自己錄製的一段英文的講解視訊
我的學習都是從以上三個資源中獲取。所以特意在資料夾中把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,同樣非常感謝。在資料夾中一併附上。請大家自行參考。
相關文章
- Emacs詳細使用說明(轉)Mac
- Flask-Limit使用詳細說明FlaskMIT
- CocoaPods | iOS詳細使用說明iOS
- mysql processlist詳細說明MySql
- session的詳細說明和用法Session
- nginx 詳解 – 詳細配置說明Nginx
- nginx 詳解 - 詳細配置說明Nginx
- Intellij IDEA 使用svn非常詳細的說明IntelliJIdea
- mysqldump引數詳細說明MySql
- mysql replace into用法詳細說明MySql
- redis info命令詳細說明Redis
- memset函式詳細說明函式
- R 語言使用
- linux系統vi命令詳細使用說明Linux
- winscp操作說明,winscp操作說明的詳細解讀
- R語言︱文字挖掘之中文分詞包——Rwordseg包(原理、功能、詳解)R語言中文分詞
- Linux sed命令詳細說明Linux
- VNC安裝配置詳細說明VNC
- Nginx配置檔案詳細說明Nginx
- 總帳介面表詳細說明
- 寬頻路由器的詳細說明路由器
- MySQL mysqldump命令的引數詳細說明MySql
- 前端meta標籤內容定義及使用說明,meta詳細說明,meta標籤使用前端
- 細說 CSS 語言的誕生史CSS
- 流量控制工具TC詳細說明
- sql server系統表詳細說明SQLServer
- mysql uninstall plugins 詳細說明MySqlPlugin
- jpa 方法 命名規則 詳細說明
- oracle的dbms_stats包詳細解說Oracle
- php中的var_dump()方法的詳細說明PHP
- 程式語言特色:系統說明書
- JQuery Datatables Columns API 引數詳細說明jQueryAPI
- Oracle RAC中Srvctl命令詳細說明(轉)Oracle
- sql server系統表詳細說明(zt)SQLServer
- R語言專題,如何使用party包構建決策樹?R語言
- 詳細說明搜尋引擎優化的過程優化
- 網路交換機功能和原理的詳細說明
- MySQL引數DELAY_KEY_WRITE的詳細說明MySql