R的arguments出現三個點是...?

R函數介紹

需要先介紹怎麼在R裡面寫函數

f <- function(...) { 
  names(list(...)) 
} 

上述程式碼中,·f是一個使用者自訂函數,就像java裡面的method,而**…**的功能,則是讓f函數可以輸入各式各樣的參數,而且可以將參數往下丟到其他函數內。

…使用範例一

舉例來說,若執行f(a = 1, b = 2),a和b這兩個參數可以直接傳到list()函數中,變成names(list(a=1,b=2)),意即生成一個list,內有兩個元素,a=1以及b=2。

f(a = 1, b = 2)
## [1] "a" "b"
names(list(a=1,b=2)) #輸出相同
## [1] "a" "b"

…使用範例二

addPercent <- function(x, mult = 100, ...){ 
  percent <- round(x * mult, ...) 
  paste0(percent, "%") 
}

在上述程式碼中,addPercent是一個使用者自訂函數,**…**的功能讓addPercent函數可以輸入各式各樣的參數,而且可以將參數往下丟到其他函數內。

addPercent(c(0.5887,0.6925), digits = 2)
## [1] "58.87%" "69.25%"
addPercent(c(0.5887,0.6925), digits = 1)
## [1] "58.9%" "69.2%"

因此在執行addPercent(c(0.5887,0.6925), digits = 2)時,digits參數被傳遞到自定義函數addPercent中的round函數內,變成round函數中的參數。 在round函數中,digits參數的功能是設定四捨五入的位數,因此digits = 2是指四捨五入到小數點第二位,digits = 1是指四捨五入到小數點第一位。

…使用範例三

HelloWorld <- function(...) {
  arguments <- list(...) 
  paste(arguments)
} 
HelloWorld("Hello", "World", "!","~")
## [1] "Hello" "World" "!"     "~"

Contents

comments powered by Disqus