看板 R_Language 關於我們 聯絡資訊
在 R 語言中的 function 可以接受「...」的引數(以下稱三點引數)。 我目前對三點引數的作用有二種理解,以下分別討論。 1. 提供引數給其它 function 用。 三點引數可讓我們很方便地把不確定的引數丟給其它 function 使用,請見下例。 paired.t.test <- function(x, y, ...){ t.test(x, y, paired = T, ...) } a <- c(1,2,3); b <- c(2,2,4) paired.t.test(x = a, y = b) # line 1 paired.t.test(x = a, y = b, mu = 2) # line 2 paired.t.test(x = a, y = b, mu = 2, alternative = "g") # line 3 可以發現,paired.t.test 定義了三點引數, 並再把三點引數再引入 t.test() 中。 因此,line 1 中沒使用三點引數, 或是 line 2 中使用三點引數(mu = 2), 或是 line 3 中的三點引數(mu = 2 及 alternative = "g"), 都可以成功運作。 也可以發現,三點引數特別之處是引用時「可有可無」, 否則 line 1 應該失敗。 2. 用於未指定個數之引數(們) 如果不確定要丟入幾個引數時,三點引數也有特別的用處,請見下例。 listSum <- function(...) { input <- list(...) output <- lapply(input, sum) return(output) } listSum(a = c(2,3)) # line 4 listSum(a = 1, b = 2) # line 5 listSum(a = c(1,2,3), b = 2, c(2,3,4,5,6)) # line 6 這個例子中,即使引數 a 和 b 都沒被定義在 listSum() 中, 也可以得到結果。 當然,我是把所有引數都放在同一個 list 中才達成的。 ============= 分隔線 ============== 我不知道我舉出的這二種作用是不是很完整,我也還沒完全摸清三點引數。 歡迎各位指教、補充。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.75.218 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1434209705.A.85D.html
celestialgod: 簡單來說就是pass extra elements for specific fun 06/13 23:58
celestialgod: ction in function... 06/13 23:58
celestialgod: 其實1, 2應該是一樣的東西 06/13 23:59
andrew43: 我目前是把它理解成不定個數的引數,但本質上還是引數。 06/14 00:54
gsuper: 這個好 06/14 04:32