gpt4 book ai didi

Roxygen2 - 如何 @export 引用类生成器?

转载 作者:行者123 更新时间:2023-12-02 14:36:35 25 4
gpt4 key购买 nike

例如,假设我有以下名为 Test 的包,并且我想导出类 A:

# In /R/Test.R:
#' @docType package
#' @import methods
#' @exportClass A
A <- setRefClass("A", methods = list(foo = identity))

但是,构建并加载后,在使用 A 的生成器时出现以下错误:

> library(Test)
> A()$foo(1)
Error: could not find function "A"

我已检查 NAMESPACE 文件的内容是否正常:

exportClasses(A)
import(methods)

那么到底出了什么问题呢?为什么我的类生成器没有被导出?

最佳答案

如果添加@export A,那么生成器函数A也会被导出,例如

#' A class description
#'
#' @import methods
#' @export A
#' @exportClass A
A = setRefClass('A',
fields=list(name='character', n='numeric'),
methods=list(
hello=function() {
"A greeting"
return(paste0('Hello, ', name))
}
)
)

重要提示:不要忘记在导出指令中明确提及 A,否则它看起来不起作用,这与函数不同。

或者,当类被导出时,您仍然可以通过new()使用该类,例如

> a = new('A', name='Josh', n=12345)
> a$hello()
[1] "Hello, Josh"

但是添加导出很容易。

关于Roxygen2 - 如何 @export 引用类生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532365/

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