因为它在内部通用函数列表上,所以我知道rep是一个内部泛型函数。这一事实是否仅是通过阅读供代表使用的文件而得出的?我已找到以下两个有关的部分:
rep复制x中的值。它是一个泛型函数,这里描述了(内部)默认方法。对于内部默认方法,可以包括:
这两种方法中有一种是专门告诉读者rep是一个内部泛型函数吗?
为了完全清楚,我要问的是这些摘录中使用的术语。我不是R的术语专家,所以我要问的是他们所使用的词汇所隐含的含义。例如,如果R文档说一个函数“是泛型的”,并且有一个“内部默认方法”,这是否意味着该函数因此是一个内部泛型函数?
链接到某种R术语词汇表,或R手册中的相关部分,将是一个很好的答案的一个很强的组成部分。一个简单的是或不是可能是不够的。
发布于 2021-03-04 15:29:58
首先,我认为您将受益于以下资源(15.7泛型函数OO,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):
泛型函数:“根据输入类将输入对象分派给多个方法函数中的一个的函数”。
泛型函数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 foundc) R-CRAN资源
最后,CRAN在编译R-编程语言的定义方面做了很大的工作-- (cran.r-project.org/doc/manuals/r-release/R-lang.html);这里有更多关于"5面向对象编程“部分的信息。但以上所提供的资源更有教育意义。CRAN提供了一些您可能感兴趣的手册(ran.r-project.org/manuals.html)。
https://stackoverflow.com/questions/66338391
复制相似问题