当前位置:  开发笔记 > 编程语言 > 正文

R从包内的导出函数调用内部函数

如何解决《R从包内的导出函数调用内部函数》经验,为你挑选了1个好方法。

我在RStudio中创建一个R包.假设我有两个函数fnbig()并且fnsmall()在我的包中命名foo.fnbig()是使用该包必须可供用户访问的函数.fnsmall()是一个内部函数,用户无法访问,但应该可以在其中访问fnbig().

# package code
fnsmall <- function()
{
bla bla..
}

#' @export
fnbig <- function()
{
bla bla..
x <- fnsmall()
bla..
}

我试过出口fnsmall().所有的作品,但它都是NAMESPACE.我尝试不导出fnsmall(),但fnbig()在使用x <- fnsmall()或时它不起作用x <- foo::fnsmall().然后我尝试使用x <- foo:::fnsmall(),它的工作原理.但我读到:::不推荐使用.

这样做的最佳方法是什么?如何从导出的函数调用内部函数?



1> JAD..:

但我读到不建议使用:::。

我认为您是根据R编写软件包的手册中的以下陈述提到这一点的。

使用foo:::f而不是foo::f允许访问未导出的对象。通常不建议这样做,因为软件包作者可以在日常维护中更改未导出对象的语义。

不建议这样做的原因是未导出的函数没有文档,因此包编写者无法保证它们将继续做现在的工作。

但是,由于您引用的是自己的未导出功能,因此您可以完全控制这些功能中发生的事情,因此该异议并不那么重要。

foo:::fnsmall因此,将其称为一个不错的选择。

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有