i有一个软件包,该软件包为其对象提供了as.FlexTable
方法,从ReporteRs
软件包中扩展了S3 Generic。因此,由Roxygen生成的我的名称空间文件具有线:
importFrom(ReporteRs,as.FlexTable)
...
S3method(as.FlexTable,huxtable)
...
export(as.FlexTable)
我不想将记者放入导入中:在描述文件中,因为它涉及对Java的大外部依赖。但是,当我将其提出建议时:R CMD check
给了我"命名空间依赖性不需要"之类的错误。
无论如何,我可以在不进行硬依赖的情况下扩展通用吗?
导入是一个困难的依赖性。有些人不正式导入,但使用<pkgNamespace>::<obj>
相反,和在可用性上对其代码进行条件划分那个名称空间。我根本不建议这样做,尤其不是扩展通用。
我建议您与ReporteRs
的维护者交谈:
-
您可以使用常见(尚未创建)非常小的包装说
flexS3generics
您要使用S3仿制药(和S4)两者都从那个迷你包装中进口。您将是该软件包的作者。 -
如果您的包裹小得多(在其足迹中,包括依赖关系)比"记者"她/他可能同意进口s3 generic从包装中而不是相反。
两者都是干净的解决方案,在释放到cran时都需要一些时间协调" 1)"更容易:一旦flexS3generics
释放到cran,将您的包裹(s)更改为 importFrom(flexS3generics, as.FlexTable)
,但这些变化和克兰然后,提交是彼此独立的。
((口味:我强烈喜欢as.flexTable
(小写)))