命名功能

R 充滿了函式,它畢竟是一種函數語言程式設計語言 ,但有時候 Base 資源中沒有提供所需的精確函式。你可以想象安裝一個包含該功能的軟體包 ,但是你的要求可能是如此具體,以至於沒有預製功能符合要求?然後你可以選擇製作自己的。

一個函式可以非常簡單,直到幾乎沒有意義。它甚至不需要爭論:

one <- function() { 1 }
one()
[1] 1

two <- function() { 1 + 1 }
two()
[1] 2

花括號 { } 之間的關係是正確的功能。只要你可以將所有東西放在一條線上,它們就不是嚴格需要的,但對於保持組織有用是有用的。

功能可以非常簡單,但非常具體。該函式將向量(在本例中為 vec)作為輸入,並從向量元素的每一箇中減去向量長度(在本例中為 6)的相同向量。

vec <- 4:9
subtract.length <- function(x) { x - length(x) }
subtract.length(vec)
[1] -2 -1  0  1  2  3

請注意,length() 本身就是預先提供的(即 Base )功能。你當然可以在另一個自制函式中使用以前自制的函式,以及在跨越多行時分配變數和執行其他操作:

vec2 <- (4:7)/2

msdf <- function(x, multiplier=4) {
    mult <- x * multiplier
    subl <- subtract.length(x)
    data.frame(mult, subl)
}

msdf(vec2, 5)
  mult subl
1 10.0 -2.0
2 12.5 -1.5
3 15.0 -1.0
4 17.5 -0.5

multiplier=4 確保 4 是引數 multiplier 的預設值,如果在呼叫函式 4 時沒有給出值,則將使用該值。

以上都是命名函式的例子,之所以這麼稱呼只是因為它們被賦予了名稱(onetwosubtract.length 等)