gpt4 book ai didi

r - 同一 R 包中非导出函数的显式命名空间 - 最佳实践

转载 作者:行者123 更新时间:2023-12-05 05:47:06 25 4
gpt4 key购买 nike

我有一个 R 程序包 (MyPackage),其中有一些已导出(使用 @export)和一些未导出的函数。如果我从包的其他地方调用一个非导出函数,引用它的最合适的方法是什么?例如,给定以下代码:

#' @export
f1 <- function(){
f2()
}

f2 <- function(){
print('hello')
}

当我在包上运行 linting 时,我收到警告:

no visible global function definition for 'f2'

我可以使用 MyPackage:f2 但我的理解是这不是必需的。对于同一包中的函数,我不希望得到错误“没有可见的全局函数定义”。这种情况下的最佳做法是什么?

最佳答案

正如我自己和其他人所提到的,您的代码不会产生这样的警告。

在最佳实践方面,不要使用 MyPackage:::f2。如前所述 here .

A function is not exported to user is not present in the NAMESPACE. Ifyou use roxygen, putting @export tag ONLY for the function you want toexport will do the job.

正如您所做的那样,只需将 @export 标记用于您想要提供的功能,而不是内部功能,这是可行的方法。您应该只用一些 roxygen 注释来装饰您的内部函数,然后决定是否要为此函数创建一个手册页。

如果您不想为 f2 创建手册页,您应该使用 #' @noRd 标签。 ( source )

#' Internal function printing "hello"
#' @description A function that prints the text "hello".
#' @noRd
f2 <- function(){
print('hello')
}

如果您想为 f2 创建一个手册页,但要将其从手册索引中排除,您可以使用 @keywords internal,它甚至可以使用f1 或基本上您不希望在手册中过于明显的任何功能。

#' Internal function printing "hello"
#' @description A function that prints the text "hello".
#' @keywords internal
f2 <- function(){
print('hello')
}

关于r - 同一 R 包中非导出函数的显式命名空间 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71070845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com