Я столкнулся с популярным пакетом data.table, и одна вещь, в частности, заинтриговала меня. Он имеет оператор присваивания местами
: =
Это не определено в базе R. На самом деле, если вы не загрузили пакет data.table, это вызвало бы ошибку, если вы попытались использовать его (например, a := 2) с сообщением:
Ошибка: не удалось найти функцию
":="
Кроме того, почему работает :=? Почему R позволяет определить := как инфиксный оператор, а каждая другая функция infix должна быть окружена %%, например.
`:=` <- function(a, b) {
paste(a,b)
}
"abc" := "def"
Очевидно, что это не означает альтернативный синтаксис %function.name% для определения функций infix. Использует ли data.table некоторые синтаксические особенности R? Это взломать? Будет ли оно "исправлено" в будущем?