构建包自动假定存在类

时间:2014-10-16 18:51:07

标签: r

我已经构建了我的第一个R包,并且遇到了以下问题:我有一个名为plot.fig的函数,它应该绘制一个项目特定的东西。现在当我构建它自动假设的包时,该数字是一个S3对象:

* checking S3 generic/method consistency ... WARNING
plot:
  function(x, ...)
plot.fig:
  function(fig1,fig2)

如何在不重命名功能的情况下解决此问题?

1 个答案:

答案 0 :(得分:2)

您有几个选择。

首先,这是一个警告,而不是一个错误,所以你可以自由地忽略它。如果这个包只供你自己使用那么它并不重要。如果您正在共享该包,那么您可以告诉与您共享的人忽略它。这里的一个障碍是CRAN不会发布警告(不确定github或其他)。

您可以更改您的函数以匹配泛型(将第一个参数命名为" x")并创建一个创建' fig'对象即使函数没有做任何有用的事情(并且在NAMESPACE文件中做任何需要的注册)。这将使调度系统满意并停止警告(但这是一个kludge)。

你可以创建一个合适的OO系统,你的函数是一个方法。

您可以更改功能文件名(即使您不想这样做)。这可能是最干净的。如果你只是忽略了警告,后来又加载了一个包(可能是第三方)来创建类型'无花果的对象。那么你的函数可能会被S3方法调度调用,即使它不是合适的绘图函数。警告正在引导您进行防御性编程以避免这种可能的错误。