這裡介紹什麼是 R,以及其發展的歷史。
R 這個名稱其實代表兩個東西,一個是 R 這個程式語言,另外一個是執行 R 程式的軟體環境,所以 R 這個字同時是程式語言以及軟體的名稱,而當我們在書籍或是網路上看到 R 這個名詞時,通常應該都很容易辨別它是代表哪一種(甚至同時意指這兩種)。
R 程式語言誕生於 90 年代初期,由奧克蘭大學的 Ross Ihaka 與 Robert Gentleman 所發展出來的,它是以 S 語言(誕生於 70 年代的貝爾實驗室,主要作者為 John Chambers)為基礎所發展出來的一個 GNU 專案,以免費且開放的方式釋出其原始碼,目前 R 這個專案是由 R Core Team 的二十位成員負責開發與維護。
由於 R 語言(S 語言)從 70 年代持續演變至今,經過了好幾個世代,並不像近代的新興程式語言(如微軟的 .Net)是全新設計的,所以 R 的語法在某些時候會讓人感覺很奇怪,或是同時允許好幾種不同的寫法,這個現象是一個語言經過長期自由發展之後所難以避免的。當然語言很自由也是有優點的,如果您不喜歡 R 原本的功能,我們可以自己動手直接改寫我們想要的功能,而且通常我們要的功能都已經有人寫好了,我們的問題通常不是「R 可以處理這個問題嗎?」,反而我們會問「這裡有三種實作版本,我應該用哪一個?」。
R 語言本身是屬於高階的直譯式語言(interpreted language),所以在程式執行之前,使用者不需要自己編譯程式,我們可以把心力全部投入在資料的分析上,不用去管太低階的電腦問題,就跟使用 Matlab 這類的程式語言類似。
R 本身支援混合式的程式設計模式,在他的內部核心中是以指令式程式設計(imperative programming)來撰寫的(就像一般的指令稿,一行接著一行執行),但它也支援物件導向程式設計(object-oriented programming)與函數式程式設計(functional programming),混合式的程式設計風格會讓一個問題有好幾種解決方式,程式設計師可以依自己的喜好來選擇。
There is more than one way to do it.
— Larry Wall
以下是 R 語言的一些特色: