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
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