не во всех случаях, если авторы академической публикации, использовали какой-то инструмент (в широком смысле, будь то hardware или software, или теорема, или логический аргумент, и т.д.), то они обязательно дадут на него ссылку
Часто софт для обработки данных даже не упоминается в тексте (особенно если использован какой-то тривиальный и общеизвестный метод)…
Стоит дополнить, что ООП в R резко отличается от других языков. Во-первых, это наличие нескольких объектных моделей (S3, S4, ...). Во-вторых, методы принадлежат функциям, а не классам (пример с использованием plot() на разных объектах это наглядно демонстрирует).
join — это скорее декартово произведение, чем пересечение.
Не просто «скорее»: соединение как раз и определяется как декартово произведение, к которому применена выборка по указанному условию соединения. В SQL это легко увидеть, например:
SELECT t1.id, t2.id
FROM t1
INNER JOIN t2
ON t1.id = t2.id
эквивалентно декартовому произведению с условием:
SELECT t1.id, t2.id
FROM t1, t2
WHERE t1.id = t2.id
или используем альтернативный синтаксис с CROSS JOIN:
SELECT t1.id, t2.id
FROM t1
CROSS JOIN t2
WHERE t1.id = t2.id
Будет обработано всегда — в смысле, что внутри функции мы можем присвоить переменной какое угодно имя, и ошибки не будет. Например, mean(some_var_name <- 1:5) будет обработано корректно, а mean(some_var_name = 1:5) выдаст ошибку т.к. название аргумента у этой функции х.
(Сам не одобряю практику использования стрелки внутри функции, просто как иллюстрация возможности)
В самом начале это давало обратную совместимость с S и S-PLUS. Сейчас особого смысла здесь нет: исключительно традиция. И поскольку R используется не только в машинном обучении, традиция вряд ли поменяется в обозримом будущем.
И да, внутри функции всё-таки лучше использовать =. Просто этот пример наглядно демонстрирует, что назначение параметра функции и присвоение значения — не одно и тоже. В вашем примере func_name(x <- 5) будет обработано всегда, а вот func_name(x = 5) только если x является параметром функции.
:= был оператором присвоения только в ранних версиях R. Сейчас в base такого оператора больше нет, а значит его вызов и не должен работать. Но токен := остался в коде R как LEFT_ASSIGN (см. source code).
А раз есть токен, то := можно использовать как инфиксный оператор, не прибегая к формату %function_name%. Таким образом, его использование в коллекции tidy правомерное, хотя это своего рода хак. Да и не только там := встречается: в data.table он тоже есть.
По-хорошему, использование оператора <- в списке аргументов функций должено считаться плохой практикой.
С этим полностью согласен: глобального присвоения следует избегать. Поэтому оправданной будет конвенция = для параметров функции, <- для всего остального.
Заголовок статьи дезинформирует: оригинальное исследование только про фрилансеров.
Ну а вообще да, любая работа должна контролироваться (=code review), выполняться в разумные сроки, и достойно оплачиваться. С последним пунктом в исследовании явно была проблема.
Часто софт для обработки данных даже не упоминается в тексте (особенно если использован какой-то тривиальный и общеизвестный метод)…
Да, вы правы: методы принадлежат функциям только в базовых моделях S3 и S4.
plot()
на разных объектах это наглядно демонстрирует).Не просто «скорее»: соединение как раз и определяется как декартово произведение, к которому применена выборка по указанному условию соединения. В SQL это легко увидеть, например:
эквивалентно декартовому произведению с условием:
или используем альтернативный синтаксис с CROSS JOIN:
mean(some_var_name <- 1:5)
будет обработано корректно, аmean(some_var_name = 1:5)
выдаст ошибку т.к. название аргумента у этой функции х.(Сам не одобряю практику использования стрелки внутри функции, просто как иллюстрация возможности)
И да, внутри функции всё-таки лучше использовать
=
. Просто этот пример наглядно демонстрирует, что назначение параметра функции и присвоение значения — не одно и тоже. В вашем примереfunc_name(x <- 5)
будет обработано всегда, а вотfunc_name(x = 5)
только если x является параметром функции.:=
был оператором присвоения только в ранних версиях R. Сейчас в base такого оператора больше нет, а значит его вызов и не должен работать. Но токен:=
остался в коде R какLEFT_ASSIGN
(см. source code).А раз есть токен, то
:=
можно использовать как инфиксный оператор, не прибегая к формату%function_name%
. Таким образом, его использование в коллекции tidy правомерное, хотя это своего рода хак. Да и не только там:=
встречается: в data.table он тоже есть.С этим полностью согласен: глобального присвоения следует избегать. Поэтому оправданной будет конвенция
=
для параметров функции,<-
для всего остального.Ну а вообще да, любая работа должна контролироваться (=code review), выполняться в разумные сроки, и достойно оплачиваться. С последним пунктом в исследовании явно была проблема.