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