R-Project之初探



李孟諵
[原文刊載於SRDA學術調查研究資料庫通訊第36期,2011.03]
  
隨電腦科技的發達,以往需要花費大量運算時間的工作(例如:進行學術研究或是行銷分析),現在只要透過電腦搭配適當的統計軟體,就能大大減少很多不必要的人力和時間成本。目前市場上有許多跟統計分析相關的商業軟體,像是SASSPSSSTATA等,這些商業軟體固然在資料的處理、介面的操作、或是圖表的繪製上各有其優點,然而,有個實際的問題就是這些商業軟體普遍價格高昂。不是買斷後無法隨著版本改版而更新,不然就是每年都得花錢購買使用權。所以,除非是企業組織編列經費購買,否則對於一般使用者來說,經濟上負擔可能會過於沉重。因此,當有一套免費且可隨著改版自由更新的軟體,能滿足大部分統計分析上的需求時,的確是蠻吸引人的。
R的發展
R的發展,可追溯到70年代貝爾實驗室(Bell Laboratories)的一個研究專案,此專案想要發展一套適合統計研究人員使用的互動式(interactive)統計分析軟體,所以開發出S語言[1],也就是S-Plus的基礎。到了90年代初期,任教於紐西蘭奧克蘭大學(The University of Auckland, New Zealand)的Ross IhakaRobert Gentleman為了解決學校的麥金塔(Macintosh)電腦沒有合適的統計軟體可使用,於是仿擬S語言和Scheme語言[2]的架構,進而發展出R來作為統計教學上的輔助軟體。所以S的語法(syntax)加上Scheme的基本語義(underlying semantics)就等於現在的RDing2011)。而之所以會取名叫做「R」,部分來自於S語言的影響,部分則是兩人用來慶祝自己的努力(剛好名字第一個英文字母都為R)。然而發展初期只有開發在Mac電腦上執行的版本,直到1997年中期專門研發R的核心團隊成立後,才開始將開放原始碼(open source code)的R移植到不同的作業系統上,並加入自由軟體基金會(Free Software Foundation,簡稱FSF)的GNU計畫[3]。這使得R具有價格免費、原碼開放和功能擴充等一些商業統計軟體所沒有的特性,也因此逐漸受到學術界的重視。
R是什麼
關於R,在官網的介紹文件有特別提到是一種「環境」的說法。也就是說,有別於一些統計軟體,不能再增長甚至不具有彈性。R是一種經過充分設計並且結構統一的系統,而不是一個功能非常專一,難以擴充的工作群(丁國徽,2007)。事實上,許多人將它視為統計軟體,但其實它更像是程式語言,一種以物件導向為主的程式語言,除了基本的功能外,還可以讓使用者輕易加上自己的新功能。SAS統計發展部門的高階主管Bob Rodriguez在官網的技術文章中就提到「R是一個開發新統計方法的領先語言[4]」。因此,R可以說是一個具有許多古典統計及現代統計技術的環境(范素瑋,2009)。國家高速網路與計算中心(以下簡稱國網中心)對於R有更完整的解釋,R是一個程式語言、統計分析與繪圖的整合環境。不過普遍來說,因為運用在統計分析的範疇比較多,所以許多人還是把R視為是一套統計軟體。
R的優點
從國網中心所架設的『R學習筆記[5]』網站,可以看到關於R軟體的幾項優點:
1. 免費[6]R是一套Open Source Code的軟體,任何人都可以自由下載使用。而每年大約會改版兩次,升級也不困難。
2. 佔有率高:從程式語言的角度來看,SAS是目前最普遍被使用的統計軟體[7],但R在學術界有日漸重視的趨勢,尤其在近期的統計期刊中,常常可以看到R的蹤跡。
3. 跨平台:R可以在各種平台上運作,包含WindowsMacintoshLinux等多種平台。
4. 彈性大:R是一種程式語言,而且程式碼是開放的。使用者可以自行撰寫適合自己的分析程式,或是透過程式碼的改寫,讓使用者能減少重新開發程式的時間。
5. 互動式:傳統的統計分析軟體,是將所有的統計分析過程一次做完,產生報表,而R可以互動式的一步一步處理,使用者可以依照每一步的結果而決定下一步該如何處理。



除此之外,R也支援各種資料格式的輸入與輸出,與其他程式語言(例如CC++JAVAFortranPerlPython)也有著良好的相容性(可以呼叫其他語言的函式庫)。就連知名的商業軟體,像是SAS[8]SPSS[9]也都可以透過安裝自家的Plug-in程式,就能直接讀取R的語法。因此許多需要複雜運算或是需要開發新分析方法的專業領域,例如:財經、生物統計、醫學分析、空間統計等,都已普遍使用R來做研究,或是透過R來補充商業統計軟體所無法達成的工作。
R的取得
R是套免費的軟體,有許多管道可以自由取得,以下範例是直接到英文官方網站(http://www.r-project.org/)下載。當進到英文官網首頁後,請點選左邊「Download, Packages」下的「CRAN[10]」(如圖1)。
 圖1  R英文官網首頁

CRAN Mirrors網頁,請選擇離自己最近的鏡像站,在台灣當然就選Taiwan底下的三個連結其中之ㄧ(如圖2)。



2  各國的鏡像站連結

由於R是跨平台的軟體,因此有三種環境的作業系統可以選擇(LinuxMacOS XWindows),本文範例就以Windows作業系統的為例(如圖3)。



3  三種作業系統

   

直接點選base,會進到下載主程式的頁面。而點選contrib則是會進到R的套件庫,裡面都是眾多使用者所分享出來的貢獻包(Contributed Packages),也就是擴充套件(如圖4)。


4  主程式和套件庫

目前釋出的版本為R-2.12.1,不論是32或是64位元的Windows作業系統都能適用(如圖5)。



5  下載Windows版本的R

下載後執行安裝,安裝過程可選擇安裝語言(範例是選擇繁體中文),確定後跟著安裝程式一直按「下一步」,就能完成安裝。然後執行R(點選RGui.exe)就能看到RGui的指令列視窗(如圖6),基本上,會有七個常用的套件會自動載入(如basestatsutilsmethodsgraphics等),這就表示可以開始使用R了。


6  R的指令列視窗

在視窗左下方可以看到紅色的提示游標「>」(如圖6),這就是R用來輸入指令的地方,基本上除了少數幾個可以由視窗選單或工具列點選的功能外,R的所有操作都是透過輸入指令的方式來控制。比較常用的視窗選單就是「編輯」中的「GUI偏好設定」與「程式套件」中的擴充套件選項。前者是用來改變視窗顯示的設定,例如:字型、字的大小或顏色等;而後者則是提供不同的擴充方式來安裝套件。

 
R的擴充
由於R的功能可以透過使用者自行編寫的擴充套件加強,因此除了在統計分析的原有功能之外,人工智能、財經分析、地震模擬和動力運算等特殊應用方面都各有對應的擴充套件(林坤賢,2010)。一般在安裝主程式後,R已經具有約25個基本套件(base package),包含常用的敘述性統計,如:平均數(mean)、標準差(stand deviation)、迴歸分析(regression)等等。因此,當有特殊應用需要額外擴充套件時,除了透過視窗選單的「程式套件」來安裝外,也可在R的官方網站CRAN mirror的「contrib」(套件庫)中下載安裝。細節可參考以下說明(范素瑋,2009):
1. 可以利用「程式套件」中的「安裝程式套件」選擇最靠近你所在地的CRAN mirrorTaiwan TaichungTaiwan Taipei)後,即會出現依照英文字母次序排列的套件選單,可以選取多個套件同時進行安裝。
2. 另一個方式是從CRAN Mirrors網頁,進到contrib頁面中下載所需的 .zip的安裝檔。儲存到本機電腦後,利用「用本機的zip檔案來安裝程式套件」進行安裝。
3. 此外,在主控台執行套件指令前,必須先將套件載入。可以利用「程式套件」中的「載入程式套件」選取套件名稱進行載入,或是直接在主控台指令列上利用library()輸入套件名稱來載入。
目前已有數百個擴充套件(packages)可以安裝,不過,由於不同版本的R各有其相容的套件,有些新的套件可能無法向下相容,安裝時如果有版本的問題,會在主控台視窗上看到一些警告訊息,不一定表示程式一定不能執行,但執行的結果可能會有錯誤,這點可能要特別注意。
R的操作
R的操作介面其實相當簡易,功能也不多,幾乎所有操控都是透過程式化的指令來進行,所以對R的基本操作知識是需要的。以下整理出一些簡單的操作注意事項:
1. 英文字母大小寫視為不同的符號,例如:mydataMyData是不同的。
2. #之後為註解,程式將不會執行。
3. 方向鍵按」會逐一顯示前面已執行完的指令。
4. <-」、「->」和「=」都是等於,例如:X<-1010->XX=10是一樣的。
5. 空一行或「;」可將指令分開。
6. 程式未完結就換行會顯示「+」提醒。
7. Esc」能結束指令運作。



另外,如果是使用Windows平台的話,還可安裝一個專為R設計的文字編輯器「Tinn-R[11](如圖7),可以用來輔助撰寫R語法。


7  Tinn-R的操作視窗

  除了基本操作技巧外,還需要搭配R函數來下達指令,才能讓R知道你想要做什麼事。一般來說,合法的R函數通常會帶有括號「()」,即使括弧內沒有內容(例如ls())也要加上括號,而括號內通常是輸入你想指定的特定指令,例如表1help(mean)example(plot)。然而,由於R的函數指令很多,各領域所著重的也不相同,因此更進階的函數運用礙於篇幅限制與牽涉範圍廣泛,在此就不多作描述。

1  R的基本操作函數
R函數
指令說明
help.start()
線上幫助(需要連線)
help(mean) ?mean
線上函數說明(需要連線)
getwd()
檢視目前的目錄
setwd()
設定目錄路徑,例如:setwd("C://Rwork")
list.files()
列出目錄下的檔案
library()
載入擴充套件
detach(package : xxx)
卸下擴充套件
data()
顯示目前可用的資料
ls()
顯示目前所有的物件
移除物件
demo()
示範功能
example(plot)
可從線上取得實際範例
q()
結束R程式

  R是個自由開放的軟體,它不會向你收取任何費用,功能也不會比任何同類型商業軟體差,再加上它的彈性與相容性,對於使用者來說似乎是一個體貼的軟體。此外,R雖然沒有類似商業軟體的技術支援,但網路上相關的教學說明或技術文件也相當豐富,假若真的遇到疑難雜症,也能透過郵件論壇或使用者社群等管道來尋求解決方法。或許目前的操作介面還不具親和力,對於一般使用者也較難入門,但只要多花點時間來瞭解它,一旦上手之後,不僅能節省大家的荷包,也可以不用侷限在套裝軟體的功能範圍。總而言之,一套免費又實用的自由軟體值得大家多多來利用。

參考資料
Guohui Ding201128)。R: Statistics? Programme? and Who are you?BioSino】。取自http://www.biosino.org/pages/newhtm/r/rspl.pps
丁國徽(2006711)。R導論【中文官方網站】。取自http://www.rproject.info/uploads/Site/R-guide_cn.pdf
朱孝國(2004123)。Scheme note【朱孝國的筆記本 Peter Ju's Notebook】。取自http://irw.ncut.edu.tw/peterju/scheme.html
林坤賢(20106月)。Cloud-R﹕以R軟體與雲端技術為基礎的生物統計應用網站【國立中央大學碩士論文】。取自http://thesis.lib.ncu.edu.tw/ETD-db/ETD-search-c/getfile?URN=972211005&filename=972211005.pdf
范素瑋(2009620日)。R language簡介()【國立台灣大學計算機及資訊網路中心電子報第0009期】。取自http://www.cc.ntu.edu.tw/chinese/epaper/0009/20090620_9005-1.htm
胡江堂(2009115)。心酸之路——S-Plus(被)並購大事記【技止於此】。取自http://www.jiangtanghu.com/cn/2009/01/15/



[1] 1976年由貝爾實驗室(Bell Laboratories)所開發的一種用以資料分析的互動式(interactive)程式環境,經過一連串的公司併購與軟體研發,最後由Insightful公司將其商品化,並稱之為「S-Plus」。2008年已由TIBCO收購,併納入Spotfire的分析平台,名稱叫作「TIBCO Spotfire S+」(胡江堂,2009)。
[2] Guy Lewis Steele Jr.Gerald Jay Sussman1970年代中期所發展出來,是一種函數式(functional)的程式語言,也是LISP的另一分支,主要應用在結構相當地複雜難以用傳統語言描述或是人工智慧的領域上,擅長處理符號(朱孝國,2004)。
[3] Richard Matthew Stallman1983927公開發起的,目標是建立一套完全自由的作業系統。
[4] R Interface Now Available in SAS/IML® Studio(取自http://support.sas.com/rnd/app/studio/Rinterface2.html
[5] 國家高速網路與計算中心20113月)。R簡介【R學習筆記】。(取自http://sites.google.com/site/rprojectnotes/introduction
[6] 雖然R是免費的,但意義上,免費指的是自由,而不是價格。
[7] 依據TIOBE(全球程式語言排名統計單位)公佈的20111月全球受歡迎的程式語言排名,SAS排名第16名,R為第26名,而SPSS則排名在第51-100名之間。【每個月都會公佈最新排名】(取自http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
[8] SAS 9.2的基本安裝已經含有SAS/IML® Studio,至官網註冊後可以去下載最新版本的SAS/IML® Studio3.3
[9] 至官網註冊後,就能下載支援R的套件(PASW Statistics R Essentials),安裝後透過「Begin Program R.」和「End Program.」的語法,就能在SPSS中呼叫R程式並執行R語法。
[10] 全名叫做The Comprehensive R Archive Network,是一個網路分享空間,讓使用者可在這裡分享彼此研發的套件。
[11] 下載網址http://www.sciviews.org/Tinn-R/

留言

這個網誌中的熱門文章

使用Python進行資料整理 – 初探Pandas

SAS、SPSS、STATA 統計軟體檔案格式轉換介紹

資料整理與檢誤經驗談—以SPSS程式進行邏輯檢查