這裡介紹 R 套件的基本使用方式,並整理一些常用的套件與使用範例。

R 除了其本身核心所提供的運算功能之外,還有非常大量的附加套件(packages)可以使用,由於這些套件是由來自於世界各地的開發者所開發的,不僅為數眾多、功能也相當豐富,因此對於 R 的使用者而言,安裝與使用這些套件是非常重要的技能。

使用 R 套件

要使用任何的 R 套件之前,需要先使用 library 將套件載入。

lattice 這個套件是 R 內建的套件之一,它是一個很常被使用的繪圖套件,在預設的狀況下 R 不會自動載入這個套件,若要使用 lattice 這個套件,則必須先執行:

library(lattice)

請注意這裡 library 的第一個參數是套件的名稱,而套件的名稱在指定時可以不加雙引號,library 會自動將這個參數解讀為套件的名稱。當然您也可以這樣寫:

library("lattice")

以上兩者效果是相同的。

載入 lattice 套件之後,就可以開始使用此套件所提供的各種函數或資料了。下面是一個運用 lattice 套件所提供的 dotplot 函數來繪圖的範例:

dotplot(variety ~ yield | site,
  data = barley, groups = year)

畫出的圖形為:

r-packages-lattice-dotplot-1

使用 lattice 套件的 dotplot 繪圖

lattice 套件是一個功能強大的繪圖套件,此套件的使用方式會在後續的教學內容中詳述。

如果您需要使用程式來自動指定套件名稱、載入多個套件時,記得要加上 character.only = TRUE 參數,這樣才能正確地載入套件:

pkgs <- c("lattice", "utils", "rpart")
for(pkg in pkgs) {
  library(pkg, character.only = TRUE)
}

使用 library 載入指定的套件時,若遇到該套件沒有安裝的狀況,就會產生錯誤,而如果希望採用不同的方式來處理這個問題,可以改用 require 來載入套件,它跟 library 同樣可以將套件載入,只不過它在套件載入成功時會傳回 TRUE,而載入失敗(例如跳套件未安裝)時則傳回 FALSE,不會產生錯誤的訊息。

if(!require(ggplot2)) {
  warning("Please install the 'ggplot2' package.")
}

搜尋路徑

若想查詢目前所有被載入的套件列表,可以使用 search 函數列出所有的搜尋路徑:

search()
 [1] ".GlobalEnv"        "package:lattice"   "tools:RGUI"       
 [4] "package:stats"     "package:graphics"  "package:grDevices"
 [7] "package:utils"     "package:datasets"  "package:methods"  
[10] "Autoloads"         "package:base"

這個輸出中列出了 R 在搜尋變數的時候,會搜尋到的環境空間與順序,全域環境空間(.GlobalEnv)一定是排在第一位,接著就是最近載入的一些套件,R 的基本核心函數則是放在最後面,關於環境空間的說明請參考R 環境空間與函數

已安裝的套件

若要查詢自己電腦中已經安裝的套件列表,可以使用 installed.packages 函數,它會傳回一個含有所有已安裝套件的 data frame:

installed.packages()

配合 View 來查看會比較方便:

View(installed.packages())
r-packages-view-installed-packages-1

已安裝的 R 套件

這個表格中詳述了每個套件的版本、安裝路徑、相依套件等資訊,正常 R 內建的套件都是安裝在其安裝目錄之下的 library 子目錄,我們可以使用這個指令來查詢這個路徑:

R.home("library")
[1] "C:/PROGRA~1/R/R-32~1.4/library"

或是查看 .Library 變數:

.Library
[1] "C:/PROGRA~1/R/R-32~1.4/library"

而一般的使用者也可以自行將套件安裝在自己個人的目錄之下,而個人的 R 套件目錄在不同作業系統中也都有些差異,Windows 的個人 R 套件目錄位於自己加目錄下的 R/win-library/x.y 子目錄,而 Windows 的 R 加目錄則可使用以下指令查詢:

path.expand("~")

或是查詢 HOME 環境變數亦可:

Sys.getenv("HOME")

若在 Linux 系統之中,個人 R 套件目錄則位於加目錄中的 R/R.version$platform-library/x.y 路徑之下,而其中 R.version$platform 是在 R 中的一個變數,通常它的內容會類似 i686-pc-linux-gnu 這樣的名稱。至於家目錄的查詢方式則跟 Windows 一樣。

.libPaths 函數可以查詢目前 R 在載入套件時,會搜尋的檔案系統路徑:

.libPaths()
[1] "C:/Program Files/R/R-3.2.4/library"

如果想要讓 R 可以搜尋其他路徑,可以修改這裡的設定,加上新的搜尋路徑:

path <- .libPaths()
.libPaths(c(path, "D:/my_lib"))

或將路徑加入至 R_LIBS 這個系統的環境變數當中,若有多個路徑則使用分號分隔也可以。若在 Linux 的 shell 中,則可以使用:

export R_LIBS=/path/one:/path/two