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.int
和 rep_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).
因为它在 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.int
和 rep_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).