Как большой сторонник грамматики dplyr, я создал пакет, который можно использовать для обработки класса, часто используемого в исследованиях (sumrizedExperiment, или se) с похожим синтаксисом. (название пакета очистить).
Я, например, определил новую filter
функцию с именем filter.SummarizedExperiment
, которая принимает se в качестве первого аргумента и определила функцию диспетчеризации как filter <- function(se, axis, ...){UseMethod("filter")}
.
Это работает, как и ожидалось, но после загрузки пакета очистки, эквивалентные функции dplyr маскируются, и фильтрация фреймов данных больше не работает.
Есть ли способ, которым я могу настроить свой пакет так, чтобы исходная версия фрейма данных dplyr все еще могла использоваться , и диспетчер автоматически использует версию dplyr или cleanse в зависимости от того, является ли ее первый аргумент фрейм данных или SummarizedExperiment? Каков наилучший подход к этому?
PS1: мне известно о решении использования явного пространства имен, т. Е. С использованием dplyr :: filter, но хотелось бы найти решение, в котором диспетчеризация происходит автоматически на основе класса.
PS2: dplyr - это зависимость cleanse, поэтому у всех пользователей будет установлен dplyr.