如何解决rep 的文档是否告诉我们它是一个内部通用函数?
因为它在 the list of Internal Generic Functions 上,所以我知道 rep
是一个内部通用函数。这个事实是否可以通过仅读取 the documentation for rep 得出?我找到了以下两个相关的部分:
rep 复制 x 中的值。它是一个泛型函数,这里描述了(内部)默认方法。
为了完全清楚,我问的是这些摘录中使用的术语。我不是 R 术语的专家,所以我要问的是他们使用的词所隐含的含义。例如,如果 R 文档说一个函数“是通用的”并且有一个“内部默认方法”,这是否意味着该函数因此是一个内部通用函数?
指向某种 R 术语表或其中一本 R 手册中的相关部分的链接将是一个好的答案的一个非常重要的组成部分。简单的“是”或“否”可能还不够。
解决方法
首先,我认为您会受益于以下资源(15.7 通用函数面向对象,https://homerhanumat.github.io/r-notes/generic-function-oo.html)。
其次,一些定义(摘自https://homerhanumat.github.io/r-notes/glossary-12.html和https://colinfay.me/r-internals/internal-vs-primitive.html):
通用函数:“根据输入的类,将输入对象分派给多个方法函数之一的函数”。
Generic-Function OO:“一种面向对象的编程,其中任务由通用函数执行。用于执行特定任务的方法由输入对象的类决定” .
原语和内部函数:“在构建时编译成 R 的 C 代码可以直接在所谓的原语中调用,或者通过 .Internal
接口调用,除了语法之外,它与 .External
界面非常相似。
因此,我们可以说:
内部通用函数:通用的原始函数和内部函数(例如,根据输入的类将输入对象分派给多个方法函数之一的函数)。 >
现在,回答您的问题:
a) 文档是否清晰?
“它是一个通用函数,这里描述了(内部)默认方法”。它明确指出 rep
是一个通用函数。 “(内部)”类型的一瞥,它是一个内部/原始功能。内部的括号需要什么?我其实不知道。如果它声明:“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)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。