R 确保在使用双冒号(:)时加载依赖包中的S3方法

R 确保在使用双冒号(:)时加载依赖包中的S3方法,r,mschart,officer,R,Mschart,Officer,当使用依赖包中的S3方法时,如何确保包加载并连接?使用双冒号::运算符调用时,是否在没有先前的库调用的情况下调用所有依赖包 我正在开发一个使用package1和package2的package3。package1定义了一个S3方法funky,package2定义了其他类型的方法。如果我在自己的包package3中使用funky方法,那么R无法找到相关的S3方法,即使package3同时导入package1和package2 实际问题发生在officer和mschart项目中,但它是通用的,我在R

当使用依赖包中的S3方法时,如何确保包加载并连接?使用双冒号::运算符调用时,是否在没有先前的库调用的情况下调用所有依赖包

我正在开发一个使用package1和package2的package3。package1定义了一个S3方法funky,package2定义了其他类型的方法。如果我在自己的包package3中使用funky方法,那么R无法找到相关的S3方法,即使package3同时导入package1和package2

实际问题发生在officer和mschart项目中,但它是通用的,我在RStudio中使用3个单独的包创建了一个可重用的示例

上下文

包装1 定义funkyarg和funky.characterarg。这两种方法都会导出

包装2 定义funky.numeriarg。导入package1但是,Roxygen不会在命名空间中生成S3方法

包装3 定义调用funky100的hello,即应调用数值方法。导入我也尝试过的package1和package2

重现问题

package3::hello生成一个关于缺少S3方法的错误

变通办法

然而,由于该软件包将在我们公司内部使用,我不能期望每个人都知道必须首先调用该库

关于如何确保即使在使用双冒号::运算符时,所有相关的S3方法都可用,有什么想法吗

非常感谢

乔纳斯

你可以添加这一行

Depends: package2
到包的根目录中的描述文件。这确保安装您的软件包的任何人都将自动安装package2。它还确保在任何时候加载包时,包2都已加载,并且位于用户的搜索路径上

另一种可能是添加

“@出口
嗨,艾伦,谢谢你的回答。不幸的是,Depends没有解决这个问题,因为在使用double-colon::操作符调用函数时,包仍然没有连接。关于解决方法,我确实可以调用特定的函数,但是S3函数的某些用途丢失了。在最简单的示例中,我可以调用它,但实际上我不知道调用S3方法时的确切类型。@Jonas但是为什么不像上面那样从包中导出所有相关的S3方法呢?每节课只有一行。记住,您在问我如何让我的包在不加载或附加不同包的情况下从不同包中选择一个未报告的方法?。答案肯定包括从另一个包复制方法或强制加载方法。你必须以某种方式访问代码。
Depends: package2