Hãy nhớ rằng, trong hoạt động mọi thứ R là một cuộc gọi hàm (do đó cũng là các phép gán) và mọi thứ tồn tại là một đối tượng. chức năng thay thế hành động như thể họ thay đổi lập luận của mình ở vị trí như trong
colnames(d) <- c("Input", "Output")
Họ có nhận dạng <-
vào cuối tên của họ và trả về một bản sao sửa đổi của các đối tượng tham số (không nguyên thủy chức năng thay thế) hoặc cùng một đối tượng (chức năng thay thế nguyên thủy)
Tại dấu nhắc R, sau đây sẽ không làm việc:
> `second` <- function(x, value) {
+ x[2] <- value
+ x
+ }
> x <- 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> second(x) <- 9
Error in second(x) <- 9: couldn't find function "second<-"
Như bạn thấy, R đang tìm kiếm môi trường không cho 012.373.nhưng đối với second<-
. Vì vậy, cho phép làm điều tương tự nhưng sử dụng như một định danh chức năng thay vì:
> `second<-` <- function(x, value) {
+ x[2] <- value
+ x
+ }
Bây giờ, nhiệm vụ ở vị trí thứ hai của vector hoạt động:
> second(x) <- 9
> x
[1] 1 9 3 4 5 6 7 8 9 10
Tôi cũng đã viết một kịch bản đơn giản để liệt kê tất cả các chức năng thay thế trong gói cơ sở R, find it here.
Đây là câu hỏi hoàn toàn có thể chấp nhận đối với SO –
có thể trùng lặp với ['cấp <-' (Điều gì phù hợp với điều này?] (Http://stackoverflow.com/questions/10449366/levels-what-sorcery-is-this) –
Xem ** Mở rộng R.- John Chambers (2016) **: * trang 73 đến 79 của Chương 5 * –