gpt4 book ai didi

r - 文档引用类及其方法与 roxygen2

转载 作者:行者123 更新时间:2023-12-04 18:06:24 26 4
gpt4 key购买 nike

我正在尝试用 roxygen2 记录一个引用类:

#' test class
#'
#' @name myclass
#' @export
#' @field x A number
#' @field y A number
#' @method print Print x and y
myclass = setRefClass("myclass",
fields = list(
x = "numeric",
y = "numeric"
))


myclass$methods(
print = function() {
if (.self$x > 10) {
stop("x is too large!")
}
message(paste("x: ", .self$x))
message(paste("y: ", .self$y))
}
)

myclass$methods(
initialize = function(x=NULL, y=NULL, obj=NULL) {
if(is.null(obj)) {
.self$x = x
.self$y = y
}
else {
.self$x = obj$x
.self$y = obj$y
}
}
)

?myclass 的结果:

test class

Description

test class

Fields

x
A number

y
A number

我有 4 个问题:

  • @name 是什么意思?
  • 为什么 @methods 指令在这里不起作用?
  • @export@exportClass 有什么区别?
  • 如何记录方法的参数?

我也试过这个:

myclass$methods(
#' Print two numbers
#'
#' @param msg A message to prepend
print = function(msg) {
if (.self$x > 10) {
stop("x is too large!")
}
message(paste(msg, .self$x))
message(paste(msg, .self$y))
}
)

得到这个:

> ?myclass$print
Error in .helpForCall(topicExpr, parent.frame()) :
no documentation for function ‘$’ and signature ‘x = "refObjectGenerator"’

另一个尝试:

#' test class
#'
#' @name myclass
#' @export
#' @field x A number
#' @field y A number
#' @method print Print two numbers
#' @method initialize Initialize the class
myclass = setRefClass("myclass",
fields = list(
x = "numeric",
y = "numeric"
),
methods = list(
print = function(msg) {
if (.self$x > 10) {
stop("x is too large!")
}
message(paste(msg, .self$x))
message(paste(msg, .self$y))
},
initialize = function(x=NULL, y=NULL, obj=NULL) {
if(is.null(obj)) {
.self$x = x
.self$y = y
}
else {
.self$x = obj$x
.self$y = obj$y
}
}
)
)

仍然没有运气。

最佳答案

在引用类的情况下,我很确定@export 将公开 setRefClass 返回的生成器函数,而@exportClass 将公开实际的类。

关于r - 文档引用类及其方法与 roxygen2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613238/

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