作为dplyr语法的大力支持者,我创建了一个程序包,该程序包可用于使用相似的语法处理研究中经常使用的类(summaryizedExperiment或se)。 (包名称清理)。
例如,我定义了一个名为filter
的新filter.SummarizedExperiment
函数,该函数将se作为其第一个参数,并将调度函数定义为filter <- function(se, axis, ...){UseMethod("filter")}
。
这可以按预期工作,但是在加载cleanse程序包后,dplyr等效功能被屏蔽,并且过滤数据帧不再起作用。
有没有一种方法可以调整我的程序包,以便仍可以使用dplyr的原始数据帧版本,并且调度将根据其第一个参数是否自动使用dplyr或cleanse版本数据框还是SummarizedExperiment?最好的方法是什么?
PS1:我知道使用显式命名空间的解决方案,即使用dplyr :: filter,但希望有一种基于类自动进行分配的解决方案。
PS2:dplyr是清理的依赖项,因此所有用户都将安装dplyr。
答案 0 :(得分:1)
dplyr已经为public void weeks_between_two_dates_in_java_with_joda () {
DateTime start = new DateTime(2005, 1, 1, 0, 0, 0, 0);
DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0);
Weeks weeks = Weeks.weeksBetween(start, end);
int weeksInYear = weeks.getWeeks();
}
定义了一个泛型,因此只需定义您自己的方法即可。在这里,当我们在filter
对象上调用se
时返回字符串filter
,因此请在se
中适当地替换正文:
filter.se
dplyr的library(dplyr)
filter.se <- function(x, ...) "se"
filter.default <- filter.ts <- stats::filter
修饰符是基于R的过滤器,上面的最后一行是可选的,它可以解决此问题,但是如果您不使用它,那么每当要使用base时就必须使用filter
stats::filter
。
使用以下方法进行测试:
filter