跳到主要內容區塊

計資中心電子報C&INC E-paper

專題報導

R language簡介(上)
  • 卷期:v0009
  • 出版日期:2009-06-20

作者:范素瑋 / 臺灣大學生態學與演化生物學所博士候選人


R是什麼?事實上R language就是「新的S語言」。承襲S語言的設計理念,它是一個整合型的資料處理軟體及統計軟體,也具有陣列及矩陣的演算能力及展示的繪圖工具,及簡單容易的程式設計語言,便於進行資料篩選、反覆演算、匯入/匯出資料及開發自訂程式功能。

 

R是什麼?

「The R environment」是由S語言所轉變而來,由貝爾實驗室的John Chambers最初所設計,繼而有Douglas Bates, Rick Becker, Bill Cleveland, Trevor Hastie, Daryl Pregibon 及Allan Wilks等人所實踐落實及修改。所以事實上R language就是「新的S語言」。承襲S語言的設計理念,它是一個整合型的資料處理軟體及統計軟體,同時也是繪圖軟體。
R最初是由來自紐西蘭奧克蘭大學的Ross Ihaka和Robert Gentleman開發,也因此稱為R。現在則由所謂的「R開發核心團隊」負責。R大致上的語言方式與S或S-plus語言相通,最大的不同乃在於結果的輸出,R僅會顯示最少的訊息,但可以將想要輸出結果儲存為一個物件(object),以提供後續演算,這也是與許多統計軟體如:SAS、SPSS不同的地方。
由於它是免付費的公開軟體,原始碼也可自由下載使用,在加上十分容易在官方網站(http://www.r-project.org/)找到別人寫好的套件(Package)或分析程式碼,因此近年來使用的人越來越多,並且不乏許多專業人士如:風險分析師、研究學者、統計學家等。R能快速的擴張歸功於它的物件導向功能,具有執行使用者自訂功能及Package的能力。另外他在程式語彙上的彈性也是容易編輯也成為擴展的優點。


R language的基本安裝及套件安裝

你可以在R的官方網站(http://www.r-project.org/)的「CRAN」,得到針對Unix、Macintosh或Windows的安裝軟體及原始碼。安裝程式下載後即可以安裝。安裝後執行開啟,就會看到下面的視窗。
Art editor Img


在編輯中的「GUI偏好設定」改變視窗顯示的設定,如字型、字的大小、顏色等;使用「清除主控台」或是Ctrl+L可以清除視窗,但在中文windows系統下,如果想要改變選單語言是較為困難的,核心團隊說明這是因為語系為作業系統所控制,無論安裝時選取哪種語系,都會呈現中文選單。並且由於中文化也並不完全,對某些人來說就得忍受中英文夾雜的訊息。
在基本安裝後,R平台中已經具有約25個基本套件(Base package),包含常用的敘述統計運算,如:平均數(mean)、標準差(stand deviation)、頻度分布圖(histogram)、回歸分析(regression)等等。這裡所指的套件(Package)就是系統中建置好的指令組合,為某些資料分析目的所設計的一連串指令,可能是由核心團隊所釋出,也有許多是R language的喜好者所貢獻。在R的官方網站CRAN mirror的「Package」中,有數百種套件可提供提供下載安裝。

在R平台上安裝套件的方式有兩種:

  1. 可以利用「程式套件」中的「安裝程式套件」選擇最靠近你所在地的CRAN mirror (Taiwan Taichung 或 Taiwan Taipei)後,即會出現依照英文字母次序排列的套件選單,可以選取多個套件同時進行安裝。

  2. 另一個方式是由CRAN mirror網頁中,contrib下載 .zip的安裝檔儲存後,利用「用本機的zip檔案來安裝程式套件」進行安裝。而要於主控台執行套件的指令前,必須先將套件載入,可以利用「程式套件」中的「載入程式套件」選取套件名稱進行載入,或是直接在主控台指令列上利用library()輸入套件名稱來載入。

不同版本的R平台有其相容的套件,有些新的套件可能無法向下相容,安裝時如果有版本的問題,在主控台視窗上會看到一些警告訊息,不一定表示程式一定不能執行,但執行的結果可能會有錯誤,要特別注意。如果有非用不可的理由,也可以參考「R Installation and Administration」手冊中的「Add-on Packages」;同時也可以在http://www.murdoch-sutherland.com/Rtools/下載一些工具進行偵測,並且執行輔助範例(example in help)來確定程式無誤。如果需要修改可以參考「Writing R Extension」手冊,查看如何進行套件的編輯。R官方網站(http://www.r-project.org/)的「Manuals」有各式使用手冊提供參考。
Art editor Img
 

簡單的R指令

在R平台上是使用指令列來進行分析的操作,指令輸入後結果將於下方呈現。如果你想要將運算的結果儲存起來,可以將演算式或是物件(object)指定到自訂的特定名稱中。「<-」或 「=」為指定符號。
如:
Art editor Img


R的計算及邏輯符號

「+」、「-」、「*」、「/」分別表示加、減、乘、除,「^」表示次方,運算符號與其他程式相仿。「%*%」表示進行矩陣相乘;「%o%」表示對兩的向量(vector)進行外積(outer product)計算,他也可以outer()這個指令來進行,如果我們將兩個物件之間的運算改掉時,則有不同的結果。在R語言中同樣可以使用科學符號來表示數字,如:15e-11。
Art editor Img

「&」、「|」為邏輯運算中的且及或,「>」、「<」、「>=」、「<=」,為大於、小於及大於等於和小於等於,而等於及不等於分別以「==」和「!=」。
Art editor Img
 


R對NA值的處理

如果您的資料具有缺值時,在R中可以NA來表示缺值(missing value),此時應該要特別注意所執行的演算將如何處理缺值;部分指定會忽略它,如:繪圖plot();但多數可能會造成無法演算,如:平均值計算mean()、最小值計算min()。無法計算時,你可以使用na.omit()來整理資料表格,或以na.rm=TRUE於指令中指定NA值得處理方式。


R迴圈的寫法

在R之中迴圈的書寫方式同樣也有許多種,如for(i in 1:30){…..}表示將i由1執行到30及有三十個迴圈。repeat{…..}則將會執行無窮次,可以break來進行中斷,通常我們會加上判斷式if(){…..}來,控制片段的時間點,if(){…..}通常也與else{…..},並且可以在其中夾帶多次。R語言的另一個方便之處在於他可以將數個指令夾雜連用,就像四則運算中的括號,會將月內層的括號先行運算。
Art editor Img


續...R language簡介(下)