Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 6

Для достаточно удобного совмещения описанных подходов логической валидации могу порекомендовать пакет ruler. Позволяет автоматизировать процесс «анализа конечного результата» после создания «pipe c проведением ряда проверок». В нём правила валидации определяются непосредственно в виде pipe функциональной последовательности, а результаты проверки сохраняются в виде data frame фиксированного формата.

между validate и ruler остановились на 1-м, но это не характеризует качество пакетов, а просто персональные предпочтения в использовании конструкций R и метапрограммирования

А можно немного поподробнее, пожалуйста? Вы имеете в виду формат результатов валидации (объект S4 против tibble) или что-то другое?

да нет, скорее исторически сложилось, когда смотрели на существующие пакеты некоторое время назад. Структурный же анализ делаем посредством checkmate.


Логические проверки бывают в целом несложные (диапазоны, зависимости). Удобно скидывать правила в файлы или генерировать файлы с правилами внешними скриптами или внешними админскими интерфейсами. Да и когда всегда есть dplyr под рукой, с помощью которого можно выполнить любую сложную валидацию, особого пристрастия высказывать не стали. Свою задачу решает, в целом удобно, ну и замечательно. Появится что лучше — перейдем. Ровно так и произошел год назад переход с assertrна checkmate.


Может у Вас есть кейс, где ruler однозначно "рулит"? Интересно было бы ознакомиться и взять на заметку.

Спасибо за развёрнутый ответ.


Относительно кейса у меня было всё достаточно стандартно. Есть data frame, на строки и ячейки которого накладываются ряд ограничений, очень удобно реализуемые с помощью dplyr. Необходимо написать функцию, которая проверяет выполнение всех ограничений. При выявлении "плохих" элементов необходимо подать какой-то сигнал (ошибку, предупреждение, сообщение) и вывести в консоль отчёт в компактном виде.


Для данной задачи ruler подошёл практически идеально. Конечно, рассматривал и validate, и assertr. Первый на тот момент мне показался немного переусложнённым и не позволял получить необходимый отчёт без особых танцев с бубном. Второй выполнял код очень медленно, потому что вызывал функции проверки чуть ли не построчно (вместо векторизованного варианта при создании правил через dplyr)

НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации