要在 CentOS 安裝 R 語言執行環境,如果已經安裝好了 EPEL,直接以 yum 安裝就好了。
首先搜尋 R-project 相關的套件
yum search R-project
然後安裝需要的套件
yum -y install R.x86_64 R-devel.x86_64 R-java.x86_64 R-java-devel.x86_64
如果要自己編譯 R,必須要先下載套件(必須有 --enable-R-shlib,否則安裝 RStudio-server 會遇到問題)
yum -y install readline-common readline-devel.x86_64 texinfo texlive
tar zxvf R-3.2.2.tar.gz
cd R-3.2.2
./configure --prefix=/opt/R-3.2.2 --enable-R-shlib --with-libpng --with-jpeglib --with-libtiff --with-x
make
make install
執行 configure 時,會抱怨
configure: WARNING: neither inconsolata.sty nor zi4.sty found: PDF vignettes and package manuals will not be rendered optimally
簡單測試一下,首先編輯一個檔案 test.r
#!/usr/bin/Rscript
print("HelloR")
修改執行的權限: chmod 755 test.r,有兩種方式可以執行 R Script
# 方法1
Rscript test.r
# 方法2
./test.r
在 windows 安裝 R 並測試產生 PDF
我們先在 windows 環境測試如何產生 PDF。
為了要處理文件中以及圖表中的中文顯示問題,還必須做一些額外的設定,在設定過程中,如果有遇到 MiKTeX 或是 RStudio 需要更新套件,就直接接受更新就可以了。
- 安裝 R 以及 RStudio
安裝 rmarkdown, devtools, showtext
install.packages("rmarkdown") install.packages("devtools") install.packages("showtext")
安裝 rticles
devtools::install_github("rstudio/rticles")
安裝 MiKTeX 安裝後要到選單 (MilkTex 2.9 -> Maintenance(Admin) -> Update(Admin) 更新套件
打開 RStudio Tools -> Global Options -> Sweave 將 "Weave Rnw Files using" 改為 "knitr" 將 "Typeset LaTex into PDF using" 改為 "XeLaTex"
File -> New File -> R Markdown Default Ouput Format 選擇 PDF 假設存檔是存成 test.Rmd,在該檔案的同一個目錄中,建立一個新檔案 header.tex,編碼為 UTF-8,以下為內容,如果把 標楷體 改成 simsun.ttc 就會變成宋體
\usepackage{xeCJK} \setCJKmainfont{標楷體} % 可換字型 NSimSun
在 test.Rmd 中,調整檔案的內容如下
--- title: "test" output: pdf_document: keep_tex: yes latex_engine: xelatex includes: in_header: header.tex html_document: default word_document: default --- file content: 中文 ```{r fig.showtext=TRUE} summary(cars) print("中文") plot(cars,main='中文issue') plot(cars,main='中文issue2') ``` ```{r, echo=FALSE} plot(cars) ```
為了控制報表輸出的目錄及檔案名稱,可以搭配 setwd 及 rmarkdown::render 的一些參數使用
library("rmarkdown") setwd("D:/git/project/r") rmarkdown::render(input="test.Rmd", output_format="all", output_file="20151201", output_dir="output", encoding="UTF-8")
Ref: showtext package integration
在 CentOS 7 測試產生 PDF
為了在 CentOS 7 產生 PDF Report 我們必須先安裝一些套件
安裝 rstudio-server,因為 pandoc 是產生 PDF 常用的指令,所以直接在 /usr/bin/pandoc 產生一個連結
wget https://download2.rstudio.org/rstudio-server-rhel-0.99.489-x86_64.rpm yum install --nogpgcheck rstudio-server-rhel-0.99.489-x86_64.rpm ln -s /usr/lib/rstudio-server/bin/pandoc/pandoc /usr/bin/pandoc
安裝 textlive 及相關套件
yum -y install texlive texlive-latex texlive-xetex yum -y install texlive-collection-latex yum -y install texlive-collection-latexrecommended yum -y install texlive-xetex-def
因為在測試過程中,一直發生一些套件缺少的錯誤訊息,所以直接把所有 textlive 的相關套件都安裝進去。
yum -y install 'texlive-*'
因為測試時發生以下的 titling.sty 錯誤,但在 CentOS 卻沒有這個套件,所以根據 Missing *.sty files when generating PDFs #359 的建議,直接安裝 titling
wget http://mirrors.ctan.org/macros/latex/contrib/titling.zip unzip titling.zip cd titling latex titling.ins sudo mkdir -p /usr/share/texlive/texmf-dist/tex/latex/titling sudo cp titling.sty /usr/share/texlive/texmf-dist/tex/latex/titling/ sudo texhash
處理 linux 的 fonts 通常習慣使用 windows 字型,我們可以將 c:\windows\fonts 裡面的幾個常用字型上傳到 linux
mkdir /usr/share/fonts
然後將 simsun.ttc, msyh.ttf, msyhbd.ttf, sumhei.ttf 上傳到這個資料夾
用以下指令更新 linux fonts
fc-cache -f -v
如果有更新成功,可以在這個指令的輸出結果中,看到中文字型
fc-list
將剛剛測試的 header.tex 以及 test.Rmd 上傳到 linux 任意一個資料夾 但要注意的是,header.tex 只能填寫剛剛有上傳的字型名稱,不能填寫為字型的檔案名稱
\usepackage{xeCJK} \setCJKmainfont{NSimSun}
進入 R console 在 text.Rmd 以及 header.tex 的目錄中,進入 R console 的命令列中,安裝 rmarkdown以及 showtext,然後用 rmarkdown render PDF
install.packages("rmarkdown") install.packages("showtext") library("rmarkdown") rmarkdown::render("test.Rmd")
測試過程如下:
> rmarkdown::render("test.Rmd") processing file: test.Rmd |........... | 17% ordinary text without R code |...................... | 33% label: unnamed-chunk-1 (with options) List of 1 $ fig.showtext: logi TRUE |................................ | 50% ordinary text without R code |........................................... | 67% label: unnamed-chunk-2 (with options) List of 1 $ echo: logi FALSE |...................................................... | 83% ordinary text without R code |.................................................................| 100% label: unnamed-chunk-3 (with options) List of 1 $ echo: logi FALSE output file: test.knit.md /usr/bin/pandoc +RTS -K512m -RTS test.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output test.tex --template /usr/lib64/R/library/rmarkdown/rmd/latex/default.tex --highlight-style tango --latex-engine xelatex --include-in-header header.tex --variable 'geometry:margin=1in' /usr/bin/pandoc +RTS -K512m -RTS test.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output test.pdf --template /usr/lib64/R/library/rmarkdown/rmd/latex/default.tex --highlight-style tango --latex-engine xelatex --include-in-header header.tex --variable 'geometry:margin=1in' Output created: test.pdf
最後我們就能在 linux 得到裡面有中文字的 PDF Report
如果在 render 時加上 "all" 的參數,就可以同時取得 html, docx 及 pdf 三種格式的文件
rmarkdown::render("test.Rmd", "all")