在 R 語言編程中,自定義函數是實現代碼復用的核心手段。針對初學者常見的 mystats 函數困惑,本文將逐行拆解參數默認值、條件判斷邏輯及輸出控制機制。
mystats <- function(x, parametric=TRUE, print=FALSE) {
if (parametric) {
center <- mean(x); spread <- sd(x)
} else {
center <- median(x); spread <- mad(x)
}
if (print & parametric) {
cat("Mean=", center, "\n", "SD=", spread, "\n")
} else if (print & !parametric) {
cat("Median=", center, "\n", "MAD=", spread, "\n")
}
result <- list(center=center, spread=spread)
return(result)
}
parametric=TRUE — 參數默認值這表示 parametric 是一個可選參數,若調用時未顯式傳遞,則默認啟用參數統計模式(計算均值與標準差)。若傳入 parametric=FALSE,則切換至非參數統計模式(計算中位數與 MAD)。
if (parametric) — 模式分支判斷利用參數的布爾值直接控制統計量計算邏輯:
• TRUE → 執行參數統計(mean/sd)
• FALSE → 執行非參數統計(median/mad)
這是 R 語言中以布爾值驅動分支的典型慣用寫法,簡潔高效。
if (print & parametric) — 複合條件輸出控制& 為向量化邏輯與運算符(區別於 && 的短路邏輯與)。此處要求同時滿足:
• 用戶請求打印(print=TRUE)
• 當前處於參數統計模式(parametric=TRUE)
才輸出 "Mean/SD";同理 print & !parametric 控制 "Median/MAD" 輸出。這實現了模式感知的選擇性打印。
&& / || 單標量邏輯判斷,除非確需向量化操作。roxygen2 註釋,明確標註參數含義與返回值結構。switch() 或 S3 泛型函數重構複雜分支,提升可擴展性。