[討論] R function 中的三點引數 "..."
在 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
06/13 23:58, 1F
→
06/13 23:58, , 2F
06/13 23:58, 2F
→
06/13 23:59, , 3F
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
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章