将第二个软件包的S3方法导入第一个软件包中定义的类,而不导入第二个软件包

问题描述 投票:4回答:2

我正在开发的程序包中具有以下依赖项链:

  • 我的包使用包A(trajectory)中定义的类(simmer)。
  • 它还在包B(plot.trajectory)中定义的该类(simmer.plot)使用S3方法。
  • 我可以整体导入程序包A,但是不能整体导入程序包B,因为它包含了程序包A中定义的其他功能(get_mon函数)的替代物,因此我收到关于原始功能的不必要警告替换。

如何使用/导入S3方法而不导入包B的其余部分,最好通过roxygen2

roxygen2文档suggests the following

如果要向S3泛型添加新方法,请使用@importFrom pkg泛型导入。

对于我的示例,这将是@importFrom simmer.plot plot,但这会返回警告,提示plot未导出simmer.plot。如果我首先使用@importFrom graphics plot导入通用,则会发生相同的事情。

我正在开发的程序包中具有以下依赖关系链:我的程序包使用程序包A(simmer)中定义的类(轨迹)。它还对该类使用了S3方法(plot.trajectory),...

r r-package roxygen2 r-s3
2个回答
2
投票

[IñakiÚcar提到@rawNamespace标记使我使用getNamespaceExports中提到的this answer函数得出了一个不导入包B的任何导出函数的版本。>

#' @rawNamespace import(packageB, except = getNamespaceExports("packageB"))

2
投票

使用(请参阅this):

© www.soinside.com 2019 - 2024. All rights reserved.