這裡介紹 R 套件的基本使用方式,並整理一些常用的套件與使用範例。
R 除了其本身核心所提供的運算功能之外,還有非常大量的附加套件(packages)可以使用,由於這些套件是由來自於世界各地的開發者所開發的,不僅為數眾多、功能也相當豐富,因此對於 R 的使用者而言,安裝與使用這些套件是非常重要的技能。
要使用任何的 R 套件之前,需要先使用 library
將套件載入。
lattice
這個套件是 R 內建的套件之一,它是一個很常被使用的繪圖套件,在預設的狀況下 R 不會自動載入這個套件,若要使用 lattice
這個套件,則必須先執行:
library(lattice)
請注意這裡 library
的第一個參數是套件的名稱,而套件的名稱在指定時可以不加雙引號,library
會自動將這個參數解讀為套件的名稱。當然您也可以這樣寫:
library("lattice")
以上兩者效果是相同的。
載入 lattice
套件之後,就可以開始使用此套件所提供的各種函數或資料了。下面是一個運用 lattice
套件所提供的 dotplot
函數來繪圖的範例:
dotplot(variety ~ yield | site, data = barley, groups = year)
畫出的圖形為:
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 內建的套件都是安裝在其安裝目錄之下的 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
Page: 1 2