2015年10月3日 星期六

R 語言安裝

我注意 R 語言的發展有一段時日了, 現在因為網路廣告行銷等電商應用, 大數據漸漸受到重視, 因為大數據少不了統計分析, 統計功能強大的 R 語言在大數據應用中也佔了一席之地. 這個 R 語言因為將資料處理, 統計分析, 以及圖形顯示鎔於一體, 加上跨平台, GNU 開放原始碼, 支援套件如雨後春筍般源源不絕出現, 其發展持續受到廣泛的注意. 微軟公司看到了 R 的價值, 於 2015 年併購了 Revolution R 軟體的開發公司 Revolution Analytics, 並將 R 語言整合到 Visual Studio 裡, 就是著眼於 R 強大的統計分析能力.

我第一次知道 R 語言, 是在向市圖借的這本書上看到的 :

# 好書 : 大數據挖掘:從巨量資料發現別人看不到的秘密

以往不管是 EXCEL 或 SPSS, 都以提供方便的圖形操作介面著稱; R 與傳統的統計套裝軟體不同的是, 它是以命令列指令為主, 不論是數據處理, 統計分析, 還是輸出圖形, 都是在命令列呼叫函數來處理. 雖然學習曲線較陡, 但是應用較廣較靈活, 而且有許多統計套件 (package) 可下載增強功能, 是學習統計學的完美工具. 參考 :

# 官網 : http://www.r-project.org 
# 維基 : R 語言

關於 R 語言的背景知識摘要如下 :
  1. R 是開放原始碼的跨平台自由軟體
  2. 由紐西蘭奧克蘭大學統計系教授 Ross Ihaka 與 Robert Gentleman 開發 
  3. 源自 John Chambers 在貝爾實驗室所發展的統計語言 S 語言
  4. 底層可使用 C, C++, Java, Python, Fortran 等語言實作
如果使用 Windows 系統, 可在官網的 CRAN 下載 .exe 執行檔安裝 (有元智與台大兩個載點) :

# Download R for Windows


點選安裝檔 R-3.2.2-win.exe, 按滑鼠右鍵選擇 "以系統管理員身分執行" :


R 有多國語言安裝, 會自動依作業系統挑選繁體中文 :


但要注意, 選擇目的資料夾時, 請將預設的 C:\Program Files\R\R-3.2.2 改為 C:\R\R-3.2.2, 因為預設目錄的 Program 與 Files 中間有一個空格, 這在以後安裝其他套件時可能會有問題, 只要沒空格, 其他路徑也是可以的 :


這裡請依據電腦作業系統勾選, 我是 XP 32 位元, 所以只選 Core 與 32-bit Files 即可; 若作業系統是 64 位元, 那 32-bit Files 就不必選. 另外 Message Translations 也請勾選 :


其他照預設即可 (Startup options : 預設選 No) :


安裝完畢大約是 104MB, 點桌面或程式集中的 R 即進入 R Console 控制台, 跟 Python/Lua 一樣是直譯器介面 :


R 控制台預設提示號為大於 > 符號, 可以用內建函數 options(prompt="提示號") 修改, 例如 :

> options(prompt="R>")
R>options(prompt=">")    #提示號改成 R&gtl 了
>

呼叫 options() 不傳入參數會顯示所有的工作環境選項設定, 如上傳入指定參數則可更改預設值. R 為解譯式語言, R 程式為逐行執行不須編譯, R Console 為互動式介面, 中執行 R 程式, 

執行 R 程式有兩種模式 :

1. 互動模式 (interactive) : 

即直接在 R 控制台輸入 R, 每輸入一列解譯器就執行一列, 按 Enter 時若敘述不完整, 會跳到下一列並在開頭顯示 "+" 表示需繼續輸入直到敘述完整為止才會進行解譯.

2. 批次模式 (batch) :

即把多個 R 敘述寫在一個以 .R 或 .r 為副檔名的檔案裡.


這樣就可以透過 R 控制台的對解譯器下達 R 的指令 (即呼叫函式) 了, 這種操作方式稱為互動模式 (), 例如計算 2 的平方根, 顯示內建常數 pi, 進行四則運算等 :

> sqrt(2)
[1] 1.414214
> pi
[1] 3.141593
>
> 1+1
[1] 2
>

R 的輸出結果是以向量來表示的, [1] 表示這是輸出向量的第一個元素, 若有兩個元素, 第二個元素前面就標示 [2]. 

R Console 提供了如下快捷鍵來使加速程式輸入與編輯 :

 按鍵 快捷鍵 功能
 上箭頭 Ctrl+P 向前選擇歷史指令
 下箭頭 Ctrl+N 向後選擇歷史指令
 Backspace  Ctrl+H 刪除游標左方字元
 Delete Ctrl+D 刪除游標右方字元
 Home  Ctrl+A 移動游標到指令開頭
 End Ctrl+E 移動游標到指令尾端
 右箭頭 Ctrl+F 游標向右移動一個字元
 左箭頭 Ctrl+B 游標向左移動一個字元
 Ctrl+K 將游標後面的指令刪除
 Ctrl+U 刪除整行指令

如果 R 指令執行後想要中斷執行, 只要按下 ESC 鍵即可. 點按 R Console 或右上角的 X 可關閉程式, 此時會彈出視窗, 詢問是否要儲存工作空間 (Work space) :


這是儲存程式啟動以來所有變數與計算結果的記憶體區域, 按 "是" 會在目前工作目錄下產生一個 .RData 的檔案來記錄這些資料, 下一次開啟程式時這些資料都會從檔案重新載入記憶體, 故還能使用, 但這樣也會把上一次儲存的工作空間覆蓋掉. 故若還要保存上一次的工作空間資料的話, 就要按 "否" 捨棄這一次的.

R 語言提供完整的輔助文件, 隨程式安裝於本機中. 於控制台輸入 help.start() 便會開啟瀏覽器, 顯示內建網頁文件伺服器 127.0.0.1 下的首頁 :


其中, "Manual" 提供了詳細的簡介與教學, 而 "Reference" 下的 "Search Enging & Keywords" 則提供關鍵字檢索, 最為方便. "Pakages" 則會列出目前已安裝的套件.

也可以在 R Console 中輸入 help(函數名)?函數名 直接查詢函數的功能說明, 它會開啟瀏覽器, 直接顯示輔助文件網頁, 例如 :

> help(sqrt)
> ?sqrt

也可以用 help.search("關鍵字") 來查詢, 例如 :

>  help.search("sqrt")

與上面一樣也會開啟搜尋到與 sqrt 有關的網頁. 注意, 關鍵字必須用雙引號括起來, 否則會出現錯誤. 線上文件目錄參考 :

https://stat.ethz.ch/R-manual/R-devel/library/base/html/ 

如果忘記某函數有哪些參數, 可以在控制台直接以 args(函數名) 查詢, 例如 :

> args(sqrt)
function (x)
NULL

這表示開方根函數 sqrt() 只有一個參數 x. 更厲害的是, 輸入 example(函數名), 不但會自動執行函數範例, 還會在右邊開啟視窗畫出函數圖形, 例如 :

> example(sqrt)

以下為 example 指令下完後自動執行的繪圖範例 :

sqrt> require(stats) # for spline

sqrt> require(graphics)

sqrt> xx <- -9:9

sqrt> plot(xx, sqrt(abs(xx)),  col = "red")
等待頁面變更的確認…

sqrt> lines(spline(xx, sqrt(abs(xx)), n=101), col = "pink")


不管是在桌面執行 R 捷徑或在程式集中執行 R 程式, 都是開啟 R 的 GUI 版程式 Rgui.exe (人機互動版), 通常是  C:\R\R-3.2.2\bin\x64\Rgui.exe. 其實此目錄下還有一個 Rterm.exe, 這是給批次處理用的 R Console (非互動版) :


因為 R 語言的控制台像是一個陽春的終端機, 只能一行一行輸入指令, 因此 美國人 JJ Alaire 便開發了一個 RStudio 軟體來使 R 程式開發更方便, 它以專案 (Project) 的方式來管理 R 程式開發所用到的資料, 文件, 以及圖表等分析結果, 而且所提供的程式編輯器具有函數提示與自動完成功能.

RStudio 是商業軟體, 桌上型單機版每年 US$995, 伺服器型每年 US$9995 (可以讓使用者透過瀏覽器遠端執行 R 程式), 算是非常高貴的. 但是它也有 GPL 開源版本, 與收費版的差別是少了管理工具與安全性功能如 LDAP/SSL 支援等等. 注意, RStudio 無法單獨執行, 必須先安裝 R 語言.


建議下載 zip 檔免安裝版, 解壓縮後執行 bin 下的 rstudio.exe 即可 :


可知畫面左方就是 R Console 控制台, 它有指令提示與自動完成功能, 只要敲進函數的前面幾個字元, 就會跳出函數選單與說明, 非常方便. 右上方視窗是執行環境與歷史紀錄, 右下方則是工作空間 work space 與檔案路徑 :


我想, 初學者只要使用 R Console 就可以了, 等熟悉後再使用 RStudio 也不遲. 畢竟那是專案型態的 R 程式整合開發工具, 殺雞不需要用到牛刀.

參考 :

# R language簡介(上)
R language簡介(下)
# Get Analytical with R
R 語言基礎 
R語言 - 從「主觀感覺」轉為「客觀事實」
R語言與機器學習見面會


2017-12-12 補充 :

R 語言也可以在 Raspberry Pi 上面跑, 安裝方法參考 :

在樹莓派上安裝 R 語言
Raspberry Pi 筆記(45):安裝R語言及互動介面的 Shiny Server

沒有留言 :