rep 的文档是否告诉我们它是一个内部通用函数?

Does the documentation for rep tell us that it is an internal generic function?

因为它在 the list of Internal Generic Functions, I know that rep is an internal generic function. Could this fact have been derived by only reading the documentation for rep?我找到了以下两个看起来相关的部分:

rep replicates the values in x. It is a generic function, and the (internal) default method is described here.

For the internal default method these can include:

其中任何一个是否明确告诉 reader rep 是一个内部泛型函数?

为了完全清楚,我问的是这些摘录中使用的术语。我不是 R 术语的专家,所以我要问的是他们使用的词语所暗示的意思。例如,如果 R 文档说一个函数“是通用的”并且有一个“内部默认方法”,这是否意味着该函数因此是一个内部通用函数?

A link 某种 R 术语表或 R 手册之一的相关部分,将是一个很好的答案的一个非常重要的组成部分。简单的是或否可能是不够的。

首先,我认为您会受益于以下资源 (15.7 Generic-Function OO, https://homerhanumat.github.io/r-notes/generic-function-oo.html)。

其次,一些定义(摘自https://homerhanumat.github.io/r-notes/glossary-12.html and https://colinfay.me/r-internals/internal-vs-primitive.html):

通用函数:“根据输入的 class 将输入对象分派给多个方法函数之一的函数”。

Generic-Function OO: "一种面向对象编程,其中任务由通用函数执行。用于执行特定任务的方法由 class 输入对象。

原始函数和内部函数:“在构建时编译成 R 的 C 代码可以在所谓的 原始函数 中直接调用,或者通过.Internal 界面,除了语法之外,它与 .External 界面非常相似。

因此,我们可以说:

内部通用函数:通用的原始函数和内部函数(例如,根据 class 输入)。

现在,回答您的问题:

a) 文档是否清晰?

“这是一个通用函数,这里描述了(内部)默认方法”。它明确指出 rep 是一个泛型函数。 “(内部)”有点像是一个 internal/primitive 函数。内部括号的必要性是什么?我其实不知道。如果它声明:“rep 属于内部泛型函数类别(请参阅 InternalMethods),那肯定会更清楚。此处描述了有关默认方法的详细信息”。然而,对于 rep.intrep_len 它更清楚一点(“在内部,它们是通用的”)。编写好的文档总是很难!

b) 如何凭经验判断一个函数是否是内部泛型

依靠文档并不总能保证成功。对于 CRAN 提供的多种多样的 R 包来说,这无疑是正确的。但是,这个主题不仅仅是一个随机的 R 包,而是低级 R 编程语言。阅读rep的源代码你,我们可以确认rep是一个原始函数:

> rep
function (x, ...)  .Primitive("rep")

并且通过下面的运行,我们可以确认rep是一个泛型函数:

> methods(rep)
[1] rep.bibentry*       rep.Date            rep.factor          rep.numeric_version rep.POSIXct        
[6] rep.POSIXlt         rep.roman*

因此,rep 必须是内部泛型函数。只是为了提供一个负控制(非通用函数的方法输出),见下文:

> methods(diag)
no methods found

c) R-CRAN 资源

最后,CRAN 在这里编译 R 编程语言的定义确实做得很好 (cran.r-project.org/doc/manuals/r-release/R-lang.html);在“5 面向对象编程”一节中有更多信息。但上面提供的资源更具教学意义。 CRAN 提供了一些您可能感兴趣的手册 (cran.r-project.org/manuals.html).