命名功能
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
時沒有給出值,則將使用該值。
以上都是命名函式的例子,之所以這麼稱呼只是因為它們被賦予了名稱(one
,two
,subtract.length
等)