作為一個掌握和瞭解過不知道多少種程式語言的老猴子,基本的R Lang的介紹、R程式和R Studio的安裝等等我就不在這裡贅述了。我們第一節課直接從基本的概念和語法開始。
物件 Object
R Lang是物件導向的程式設計語言。這裡的物件和其他物件導向程式設計語言有區別之處。在R Lang中,暫時可以認為物件即萬物,而不是類似於Java那樣,是一個型別的實例化產物。
在R Lang中,儲存資料的向量(vector)、矩陣(matrix)、陣列(array)、列表(list)、資料框架(data frames)以及執行特定運算指令的函式(function)等都可以被稱作物件。
R Lang基本運算符號
指令提示符號
與Python類似,R Lang是完整的解釋型語言,這也意味著我們可以透過向R發送指令去讓R執行一定的操作。
指令提示符號預設情況下是一個>
,可以透過以下命令將其修改為任意的字串:
1 | options(prompt = "R>") |
指派運算符號
R的指派運算符號和其他程式語言擁有很大的不同。雖然我們依舊可以透過=
這個常見的符號去將一個值指派給一個變數,然而由於=
在R中尚有其他用處,因此多數R Programmer建議使用另一個符號<-
,你可以透過按下鍵盤上的option -
快捷鍵(Windows鍵盤是Alt -
)來快速打出這個符號。
註釋符號
R Lang中的註釋符號和Python、Shell等解釋型語言是相同的,都是以#
開頭。習慣上我們把整行的註釋使用##
開頭,而行內註釋使用#
開頭。
工作目錄的查詢和修改
R專案中產生的物件或者暫時檔案,都會儲存在這個專案的工作目錄或工作路徑中。
可以透過以下指令來查看和修改工作目錄:
1 | getwd() # 獲取工作目錄 |
當我們建立了一個R專案(R Project),其根目錄就是當前專案的工作目錄。一般情況下,不建議隨意修改專案的工作目錄。
物件的查詢和刪除
透過object()
或ls()
函式來查詢當前的物件列表。
1 | object() # 查詢所有物件 |
透過rm()
函式來刪除物件。
1 | rm(x, y) # 刪除物件x和y |
函式 Function
R Lang中的函式同其他程式語言基本相同。需要特別說明的是R Lang中的引數(arguments)。R Lang函式中的引數與Python類似,分為必要引數和可選引數。必要引數即必須要傳入的引數,而可選引數則非必需。呼叫函式的時候建議加上引數的名字。例如:
1 | log(x = x, base = 2) # 計算以2為底,變數x的獨度對數 |
套件 Packages
特定的統計分析方法許多專用的函式集合成一組套件(package)。這個概念類似於很多程式設計語言的套件概念。但有所不同的是,在強物件導向設計語言中,例如Java,套件是一系列型別的組合。而R Lang中的套件則更類似是一個函式庫。
套件的安裝
使用函式install.packages()
安裝所需的套件,然後使用library()
函式來載入它。例如安裝套件survival
:
1 | install.packages("survival") |
你可能已經察覺了,在我們install.packages()
函式中,套件的名字是加上雙引號的,而在library()
函式中則沒有。這說明第一個名字是一個字串,僅僅代表了這個套件的名字,而第二個則是代表了這個套件。
通常,在使用library()
函式引入之後,我們就可以使用這個套件中的函式了。為了避免多個套件中有相同的函式名字,我們可以使用::
來做串連。格式是:package.name::function.name()
。例如,我們使用ggplot2
這個套件中的ggplot()
這個函式,我們就可以這樣寫:
1 | ggplot2::ggplot() |