gpt4 book ai didi

在 NAMESPACE 中使用 "<-"注册 S3method

转载 作者:行者123 更新时间:2023-12-04 16:55:27 26 4
gpt4 key购买 nike

我有一个功能 "time.foo<-"在带有 R 代码的包中,如下所示:

"time.foo<-" <- function(x,value){ STUFF }
该功能按预期工作。但我对如何记录 time.foo<- 感到困惑正确并将其添加到 NAMESPACE。
在 NAMESPACE 中,我将其添加到导出列表中:
export("time.foo<-")
我相信这是正确的。但我还必须在 NAMESPACE 中将其注册为 S3method。正确的?这种语法是什么样的?这个不对:
S3method("time","foo","<-")
这也不是:
S3method("time<-","foo")
我还需要创建 Rd这个函数的文件。和 usage我认为部分需要阅读这样的内容:
\usage{
\method{time}{foo}(x) <- value
}
那是对的吗?
我没有使用 roxygen2我想我应该是。但现在我只想知道如何在 NAMESPACE 中对此进行硬编码。建议表示赞赏。

最佳答案

除了您的类的实际函数实现之外,您还需要为您的函数定义一个泛型赋值(stats pacakge 只定义了一个泛型 time() ,而不是 time<-() )

`time<-` <- function (x, ...) {
UseMethod("time<-", x)
}
`time<-.foo` <- function(x, value) {
STUFF
}
然后你会在你的 NAMESPACE 中拥有这些
export("time<-")
S3method("time<-",foo)
不必标记用法。只显示类似的东西
\usage{
time(foo) <- value
}
通常你还会有一个 time.foo()功能。这些功能通常记录在同一个帮助页面上。见 class<-例如。或者查看类似 ?plot.formula 的页面看到你一般不鼓励人们调用具体的 .foo方法直接。那些应该通过 dispatch 找到。
即使你不想在你的项目中使用 roxygen,如果你设置一个文本 roxygen 项目很糟糕,你可以测试像这样简单的东西来查看它的输出,这可能不会有什么坏处。

关于在 NAMESPACE 中使用 "<-"注册 S3method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63163503/

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