開始使用免費開始

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)

本練習屬於課程

R 中級

檢視課程

動手互動練習

將理論付諸實踐,立即體驗我們的互動練習

開始練習