3 快速入門

跟 R 語言互動的方式有兩種:直接在 R Console 輸入合理的 syntax 後按 enter 執行,就可以馬上得到 R 語言的回饋;或者將想要執行的 R Script 部分反白選取起來後,點選 RStudio 的 Run(或者 Mac 按下快捷鍵 cmd + enter,Windows 按下 ctrl + enter。)

3.1 使用 <- 賦值

我們首先得學習一個符號 <-,它的作用是將符號右邊的值指派給符號左邊的物件,稱作賦值。舉例來說我們可以將 24 指派給一個叫做 lucky_number 的物件,當我們想知道 lucky_number 物件儲存的內容為何,可以在 R Console 中輸入 lucky_number 並按下 enter:

lucky_number <- 24
lucky_number
## [1] 24

在 RStudio 中,我們可以按 alt- 幫我們生成 <- 符號。<- 符號跟其他程式語言的 = 符號功能是完全相同的。事實上在 R 語言中使用 = 符號來賦值也是完全沒問題,但是因為絕大多數的 R 語言使用者仍然習慣使用 <- 符號,我推薦您與我們一起使用 <- 符號。

3.2 使用 c() 函數

在上一個章節我們將 24 賦值給一個 lucky_number 物件,假如不只有一個幸運數字該怎麼做呢?我們可以賦值多個物件:

lucky_number_1 <- 24
lucky_number_2 <- 34
lucky_number_1
## [1] 24
lucky_number_2
## [1] 34

但是更推薦的做法是利用 c() 這個函數(c 意指是 combine)把多個幸運數字賦值在一個物件中,這個物件的型別就稱為向量,是 R 語言一個很常使用到的基本容器。

lucky_numbers <- c(24, 34)
lucky_numbers
## [1] 24 34

3.3 使用 ? or help() 查詢

試著在命令列輸入 ?c 或者 help(c),這兩個指令的作用相同,同樣都會在 RStudio 右下角的介面 Help 打開文件。

?c
help(c)

3.4 使用 # 做註解

# 符號後面接一個空格來編寫註解,註解存在的目的是用口語告訴別人,告訴以後的自己這段程式在做什麼事情。有時可在 # 符號後面搭配 - 或者 = 將程式碼的區塊切割得更有條理。

# 賦值多個物件 ---------------------------
lucky_number_1 <- 24 # 將 24 指派給 lucky_number_1 物件
lucky_number_2 <- 34 # 將 34 指派給 lucky_number_2 物件
lucky_number_1 # 印出 lucky_number_1
## [1] 24
lucky_number_2 # 印出 lucky_number_2
## [1] 34
# 利用 c() 函數 --------------------------
lucky_numbers <- c(24, 34) # 將 24 與 34 多個值指派給 lucky_numbers 物件
lucky_numbers # 印出 lucky_numbers
## [1] 24 34

3.5 R Console 可以使用的快捷鍵

  • 按向上的箭頭與向下的箭頭可以顯示出先前執行過的程式
  • ctrlL 可以清除 R Console

3.6 宣告檔案的路徑

macOS 或者 Linux 作業系統的使用者可以跳過這個小節,僅有 windows 作業系統的使用者需要留意,在 windows 作業系統中路徑習慣使用正向斜線(Forward slash)\ 來表示不同資料夾階層,像是:

C:\Users\user\MyDocuments\data.csv

但是在 R 語言中要指派上面這個 data.csv 的絕對路徑時,必須要將 \ 全部換成 / 才能被正確辨識:

C:/Users/user/MyDocuments/data.csv

3.7 R Console 一直顯示 + 怎麼辦

R Console 之所以會出現 + 是因為它還在預期使用者要接著完成剩餘的程式碼,要排除這個障礙有兩種方法:一是將剩餘的程式碼繼續輸入執行,二是按 esc 離開這個執行的 session。

# 執行這段程式會出現 +
lucky_numbers <- c(24, 34

因為 R 語言預期還有一個右邊的小括號故出現 +,這時我們可以輸入 ) 再按 enter;或者按 esc 之後再重新做一次賦值。

3.8 如何自訂函數

函數是 R 語言中最重要的觀念,同時也是 R 使用者在處理重複性任務時大力仰賴的助手。一個自訂函數的外觀架構:

function_name <- function(輸入1, 輸入2, ..., 輸入n, 參數1, 參數2, ..., 參數n){
    # 呼叫函數後執行的程式
    return(輸出)
}

首先要給函數取個名字(function_name),告訴 R 語言這是一個函數的物件(function(...)),接著在小括號中放入想好的輸入(inputs)與參數(parameters),然後在大括號內縮排撰寫我們主要的程式,最後把輸出結果放在 return() 函數裡面。

我們來實作第一個自訂函數 add(x, y),它的作用是將輸入的兩個數字 x 與 y 相加之後的結果回傳回來:

# 定義函數 add ---------------------------
add <- function(x, y) {
  return(x + y)
}

定義好函數之後,接著就是呼叫函數並輸入適當的數字:

# 呼叫函數 add ---------------------------
add(8, 7)
## [1] 15

3.9 隨堂練習

自訂函數 get_bmi(height, weight),它的作用是將輸入的身高 height(cm) 與體重 weight(kg) 計算之後的 BMI 結果回傳回來,BMI 的計算公式為:

\[BMI = \frac{weight(kg)}{height(m)^2}\]

get_bmi <- function(height, weight) {
  #...
}
get_bmi(172, 65)
## [1] 21.97134