Tôi đã đi qua gói phổ biến data.table
và một điều đặc biệt hấp dẫn tôi. Nó có một toán tử gán tại chỗTại sao: = được phép làm toán tử kết hợp?
:=
này không được định nghĩa trong cơ sở R. Trong thực tế nếu bạn không tải gói data.table
, nó đã có thể đưa ra một lỗi nếu bạn đã cố gắng sử dụng nó (ví dụ , a := 2
) với thông báo:
Error: could not find function
":="
Ngoài ra, tại sao :=
hoạt động? Tại sao R cho phép bạn xác định :=
là toán tử kết hợp trong khi mọi hàm infix khác phải được bao quanh bởi %%
, ví dụ:
`:=` <- function(a, b) {
paste(a,b)
}
"abc" := "def"
Rõ ràng nó không có nghĩa là một cú pháp thay thế cho %function.name%
để xác định chức năng trộn. Có phải data.table
đang khai thác một số quirks phân tích cú pháp của R? Nó là một hack? Nó sẽ được "vá" trong tương lai?
Vui lòng xem tài liệu data.table, bắt đầu có thể với Câu hỏi thường gặp. –
@DirkEddelbuettel. Tôi hiểu cách nó được sử dụng trong data.table. Nhưng thực tế R cho phép một nhà điều hành như vậy được xác định và không gây ra lỗi cú pháp là điều khiến tôi tò mò. Đó là một câu hỏi cơ bản về R và có thể nó phân tích mã như thế nào. – xiaodai
AFAIK nó là địa phương để data.table và chỉ hoạt động với '[' subsetting. Vì vậy, câu hỏi của bạn là off-base (không phải là một quirk R) đó là lý do tại sao tôi đã gửi cho bạn các tài liệu data.table * mà thảo luận về điều này *. –