以下是您提供的文本的繁體中文翻譯:

R - Decision Making

# R - 決策製定:初學者指南

你好,未來的R語言編程師!我很興奮能成為你進入R語言決策世界中的引路人。作為一個教了多年計算機科學的人,我看見無數學生在掌握這些概念時眼睛發亮。所以,讓我們一起跳進去,來做些決策吧!

## 編程中的決策製定是什麼?

在我們深入R語言的具體內容之前,讓我們先來討論一下在編程中決策製定意味著什麼。想像你在一個冰淇淋店。你會隨手拿第一個看到的口味嗎?不會,你是基於自己的偏好來做決策的。編程也是一樣 - 我們希望我們的代碼能夠根據某些條件來做選擇。

## R語言中的基本決策製定:`if` 語句

### 語法結構

讓我們從R語言中最基本的決策製定工具開始:`if` 語句。這裡是它基本的結構:

```r
if (條件) {
  # 如果條件為TRUE時要執行的代碼
}

一個簡單的例子

讓我們假設我們想要檢查一個數字是否為正數。這是我們如何做到這一點:

x <- 5
if (x > 0) {
  print("x 是正數")
}

當你運行這段代碼時,你會看到打印出 "x 是正數"。為什麼?因為5的確大於0,所以條件 x > 0 是為TRUE。

添加 else 條件

但如果我们想在條件為FALSE時做些什麼呢?這就是 else 條件的作用:

x <- -3
if (x > 0) {
  print("x 是正數")
} else {
  print("x 不是正數")
}

運行這段代碼,你會看到 "x 不是正數"。else 條件給我們提供了一種處理FALSE情況的方法。

更複雜的決策:else if

有時候,生活(和編程)並不只有黑白兩色。我們可能需要檢查多個條件。這時,我們可以使用 else if

x <- 0
if (x > 0) {
  print("x 是正數")
} else if (x < 0) {
  print("x 是負數")
} else {
  print("x 是零")
}

這段代碼檢查x是正數、負數還是零。這就像是一本數字的選擇自己的冒險書!

威力無窮的 switch 語句

當你有多個特定的情況需要檢查時,switch 語句可以是你的好夥伴。它就像是一台代碼執行的自動售貨機:

day <- "Monday"
mood <- switch(day,
  "Monday" = "需要咖啡",
  "Friday" = "TGIF!",
  "這是個普通的日子"
)
print(mood)

這將會打印出 "需要咖啡"。switch 語句匹配 day 的值與選項,並返回對應的值。

使用 ifelse() 進行條件執行

R語言有一個非常方便的函數叫做 ifelse(),它將if-else語句結合成一行:

x <- 10
result <- ifelse(x > 5, "大於5", "不大於5")
print(result)

這會打印出 "大於5"。ifelse() 函數對於快速、簡單的條件非常有用。

比較運算符:條件的基石

為了做出決策,我們需要比較值。這裡是R語言中的比較運算符:

運算符 意義
< 小於
> 大於
<= 小於或等於
>= 大於或等於
== 等於
!= 不等於

例如:

a <- 5
b <- 10
print(a < b)  # TRUE
print(a == b) # FALSE

邏輯運算符:組合條件

有時候,我們需要同時檢查多個條件。這時候,邏輯運算符就派上用場了:

運算符 意義
& AND
| OR
! NOT

以下是如何使用它們的例子:

age <- 25
has_license <- TRUE

if (age >= 18 & has_license) {
  print("你可以開車")
} else {
  print("你不能開車")
}

這檢查某人是否既達到法定年齡又擁有駕駛執照,然後才允許他們開車。

組合所有內容:一個真實世界的例子

讓我們創建一個簡單的評分系統:

grade_student <- function(score) {
  if (score >= 90) {
    return("A")
  } else if (score >= 80) {
    return("B")
  } else if (score >= 70) {
    return("C")
  } else if (score >= 60) {
    return("D")
  } else {
    return("F")
  }
}

# 我們來測試我們的函數
students <- c("Alice", "Bob", "Charlie")
scores <- c(95, 82, 65)

for (i in 1:length(students)) {
  grade <- grade_student(scores[i])
  print(paste(students[i], "得到了", grade, "的成績"))
}

這個腚本定義了一個函數,用於根據數字分數分配字母成績,然後將其應用於一個學生列表。

結論

恭喜你!你剛剛踏入了R語言決策製定的世界。記住,就像學習任何新技能一樣,熟能生巧。不要害怕嘗試這些概念 - 那是真正學習發生的時候!

在我多年的教學中,我發現那些隨意玩弄代碼、弄壞東西然後再修好的學生往往能更深入地理解這些概念。所以,勇往直前,讓你的代碼做出決策,並且玩得開心吧!

Credits: Image by storyset