gpt4 book ai didi

r - 这里的useMethod是什么意思?

转载 作者:行者123 更新时间:2023-12-02 04:20:45 26 4
gpt4 key购买 nike

关于 R 的最酷的事情之一是,如果我输入函数名称,我就可以看到其实现。但这让我递归地感到困惑:

> library(xts)
> align.time
function (x, ...)
{
UseMethod("align.time")
}
<environment: namespace:xts>

x 是一个 XTS 对象,所以这是否意味着它将调用 XTSalign.time 方法...但这就是我正在查看的! (输入 xts::align.time 会给出完全相同的响应。)

最佳答案

简短的回答是您正在寻找函数xts:::align.time.xts

更长的答案是,您可以通过调用 methods 来查找 align.time 存在哪些方法:

> methods(align.time)
[1] align.time.POSIXct* align.time.POSIXlt* align.time.xts*

Non-visible functions are asterisked

这告诉您有一个方法 align.time.xts 未从命名空间导出。此时您可能会猜测它可以在 xts 包中找到,但您可以使用 getAnywhere 来确认:

> getAnywhere("align.time.xts")
A single object matching 'align.time.xts' was found
It was found in the following places
registered S3 method for align.time from namespace xts
namespace:xts
with value

function (x, n = 60, ...)
{
if (n <= 0)
stop("'n' must be positive")
.xts(x, .index(x) + (n - .index(x)%%n), tzone = indexTZ(x),
tclass = indexClass(x))
}
<environment: namespace:xts>
<小时/>

当然,您可以直接读取源代码,但由于函数未导出,因此您需要使用package:::function(即三个冒号):

> xts:::align.time.xts
function (x, n = 60, ...)
{
if (n <= 0)
stop("'n' must be positive")
.xts(x, .index(x) + (n - .index(x)%%n), tzone = indexTZ(x),
tclass = indexClass(x))
}
<environment: namespace:xts>

关于r - 这里的useMethod是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8267181/

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