R 以值傳遞引數
標題其實已經透露重點:R 是以值傳遞引數。這是什麼意思?簡單說,R 的函式不會改變你傳入該函式的變數。我們來看一個簡單的例子(請在主控台試試看):
triple <- function(x) {
x <- 3*x
x
}
a <- 5
triple(a)
a
在 triple() 函式內,參數 x 被覆寫為其值的 3 倍。之後會回傳這個新的 x。如果你以變數 a(等於 5)呼叫這個函式,你會得到 15。但 a 的值有改變嗎?如果 R 是以參考(by reference)把 a 傳給 triple(),那麼在函式內覆寫的 x 會影響到函式外的變數 a。然而,R 是以值傳遞(by value),所以你傳入函式的 R 物件不會改變,除非你做了明確的指定(assignment)。即使呼叫了 triple(a),a 還是等於 5。
你能指出下列哪一個敘述對於下面這段程式碼是錯的嗎?
increment <- function(x, inc = 1) {
x <- x + inc
x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)
本練習屬於課程
