[討論] R function 中的三點引數 "..."

看板R_Language作者 (討厭有好心推文後刪文者)時間9年前 (2015/06/13 23:35), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
在 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

06/13 23:58, , 1F
簡單來說就是pass extra elements for specific fun
06/13 23:58, 1F

06/13 23:58, , 2F
ction in function...
06/13 23:58, 2F

06/13 23:59, , 3F
其實1, 2應該是一樣的東西
06/13 23:59, 3F

06/14 00:54, , 4F
我目前是把它理解成不定個數的引數,但本質上還是引數。
06/14 00:54, 4F

06/14 04:32, , 5F
這個好
06/14 04:32, 5F
文章代碼(AID): #1LV4sfXT (R_Language)
文章代碼(AID): #1LV4sfXT (R_Language)