Когда мне нужно отфильтровать data.frame, т.е. извлечь строки, соответствующие определенным условиям, я предпочитаю использовать функцию subset:
subset(airquality, Month == 8 & Temp > 90)
Вместо функции [:
airquality[airquality$Month == 8 & airquality$Temp > 90, ]
Есть две основные причины моего предпочтения:
-  Я считаю, что код читается лучше, слева направо. Даже люди, которые ничего не знают о R, могут сказать, что делает инструкция subsetвыше.
-  Поскольку столбцы можно назвать переменными в выражении select, я могу сэкономить несколько нажатий клавиш. В приведенном выше примере мне приходилось вводитьairqualityодин раз сsubset, но три раза с[.
Итак, я жил счастливым, используя subset всюду, потому что он короче и читает лучше, даже защищая его красоту среди моих соратников-кодеров. Но вчера мой мир развалился. Читая документацию subset, я замечаю этот раздел:
Предупреждение
Это функция удобства, предназначенная для интерактивного использования. Для программирования лучше использовать стандартные функции подмножества, такие как [, и, в частности, нестандартная оценка подмножества аргументов может иметь непредвиденные последствия.
Может кто-то помочь прояснить, что означают авторы?
Во-первых, что они подразумевают под "для интерактивного использования"? Я знаю, что такое интерактивный сеанс, в отличие от script в режиме BATCH, но я не вижу, какую именно разницу он должен сделать.
Тогда, не могли бы вы объяснить "нестандартную оценку подмножества аргументов" и почему это опасно, может быть, пример?
