使用另一个 R 包中未导出的函数?
Using un-exported function from another R package?
我经常使用其他未导出的包中的实用程序类型函数:
pkg:::fun()
。我想知道我是否可以在我自己的 R 包中的 new functionality/scope 中使用这样的函数。这里正确的方法是什么?将包包含在我的描述文件中就足够了吗?
总结来自@baptise 等的评论...:[=11=]
:::
不允许在 CRAN 上使用,因此选项:
- 请作者导出它,以便您可以通过标准导入或建议在您的包中使用它。
- 复制/提升它的一个版本并在你的包中清楚地引用。
另一个技巧是使用 getFromNamespace()
:
fun <- utils::getFromNamespace("fun", "pkg")
与 :::
相比的唯一优势是您不会获得任何 NOTE,并且在 CRAN 上是允许的。当然,这不是好的做法,因为 pkg
中的隐藏更改可能会破坏您的包。
注意: 对于 roxygen2,您必须将 utils
包添加到 DESCRIPTION
文件的 Imports
字段以满足 CRAN 的要求。或者,您可以手动将其放入 NAMESPACE
。
我经常使用其他未导出的包中的实用程序类型函数:
pkg:::fun()
。我想知道我是否可以在我自己的 R 包中的 new functionality/scope 中使用这样的函数。这里正确的方法是什么?将包包含在我的描述文件中就足够了吗?
总结来自@baptise 等的评论...:[=11=]
:::
不允许在 CRAN 上使用,因此选项:- 请作者导出它,以便您可以通过标准导入或建议在您的包中使用它。
- 复制/提升它的一个版本并在你的包中清楚地引用。
另一个技巧是使用 getFromNamespace()
:
fun <- utils::getFromNamespace("fun", "pkg")
与 :::
相比的唯一优势是您不会获得任何 NOTE,并且在 CRAN 上是允许的。当然,这不是好的做法,因为 pkg
中的隐藏更改可能会破坏您的包。
注意: 对于 roxygen2,您必须将 utils
包添加到 DESCRIPTION
文件的 Imports
字段以满足 CRAN 的要求。或者,您可以手动将其放入 NAMESPACE
。