1. 학습
  2. /
  3. 강의
  4. /
  5. R nâng cao

Connected

연습 문제

R truyền đối số theo giá trị

Tiêu đề đã gợi ý rồi: R truyền đối số theo giá trị. Điều này có nghĩa là gì? Nói ngắn gọn, một hàm trong R không thể thay đổi biến mà bạn truyền vào hàm đó. Hãy xem một ví dụ đơn giản (thử trong console):

triple <- function(x) {
  x <- 3*x
  x
}
a <- 5
triple(a)
a

Bên trong hàm triple(), đối số x bị ghi đè bằng giá trị của nó nhân ba. Sau đó x mới này được trả về. Nếu bạn gọi hàm này với biến a bằng 5, bạn sẽ nhận được 15. Nhưng giá trị của a có thay đổi không? Nếu R truyền a vào triple() theo tham chiếu (by reference), việc ghi đè x bên trong hàm sẽ lan ra biến a ở bên ngoài hàm. Tuy nhiên, R truyền theo giá trị (by value), nên các đối tượng R bạn truyền vào hàm sẽ không bao giờ thay đổi trừ khi bạn gán một cách tường minh. a vẫn bằng 5, ngay cả sau khi gọi triple(a).

Bạn có thể cho biết phát biểu nào sau đây là sai về đoạn mã sau không?

increment <- function(x, inc = 1) {
  x <- x + inc
  x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)

지침

50 XP

가능한 답변