我正在制作一个R包,我遇到了一个结构问题,我不确定应该如何解决。我有几个不同的发行版,我想在我的包中实现(普通,学生等),对于每个发行版,我都会有几个与之相关的功能。然后我将有一个额外的函数使用这些函数来执行某个过程,因此我试图避免使用不同的名称来定义所有这些函数。
更清楚的是,让我举一个简单的例子。让我们说我想写一个简单的包来做几个分布的最大似然估计。理想情况下,我想调用MLE
函数,如:
MLE(data, distribution = "normal")
然后让MLE函数加载它需要的所有相关正态分布函数。因此,它可以加载特定于正态分布的density
和gradDensity
,并使用这些函数进行操作。但是,如果我打电话
MLE(data, distribution = "studentT")
然后density
和gradDensity
被定义为不同的功能,现在特定于学生的分发。
我的问题是:我如何为我感兴趣的每个不同发行版正确定义density
和gradDensity
函数,并在需要时加载它们?我考虑过为这个包定义一个新类,并且让这个对象包含我需要的所有分发函数,但这似乎有问题,因为我希望这个对象中的一个函数能够调用另一个函数对象中的函数(例如,gradDensity
可以调用density
)。我还考虑为每个发行版定义单独的环境,但我不确定这是不是很好的做法。理想情况下,我也希望用户能够定义他们自己的发行版,然后使用这个包,但是我很难理解如何在R中适当地构建这个结构。