Bắt đầu ngayBắt đầu miễn phí

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)

Bài tập này là một phần của khóa học

R nâng cao

Xem khóa học

Bài tập tương tác thực hành

Biến lý thuyết thành hành động với một trong các bài tập tương tác của chúng tôi

Bắt đầu bài tập