Pull to refresh

Comments 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)

UFO just landed and posted this here
Sign up to leave a comment.

Articles