5

通常在 R 中,有十几个函数分散在尽可能多的包中——所有这些函数都有相同的目的,但在准确性、性能、文档、理论严谨性等方面当然不同。

你如何找到这些——从 R 中,甚至从你没有安装的 CRAN 包中?

例如:通用绘图功能。使用基本包之外的函数设置辅助刻度要容易得多:

minor.tick(nx=n, ny=n, tick.ratio=n)

当然plot在 R 核心中,但minor.tick不是,它实际上在Hmisc中。

当然,这并没有出现在plot的文档中,您也不应该期望它出现。

另一个例子:绘图的数据输入参数可以由函数hexbin返回的对象提供,同样,这个函数来自R 核心之外的库。

很明显,一种从各种库中收集这些函数参数并将它们放在单个命名空间中的编程方式是什么?

*编辑:(试图更清楚地重新陈述我上面的示例: )R核心中提供的绘图参数,例如,设置轴滴答频率是xaxp/yaxp;但是,也可以通过基本包之外的函数来设置 a/t/f,同样,就像 Hmisc 包中的 minor.tick 函数一样——但你不会仅仅通过查看 plot 方法签名就知道这一点. R 中有一个元函数吗? *

到目前为止,当我遇到它们时,我一直在手动收集它们,每组都收集在一个TextMate 片段中(以及随之而来的库导入)。这并不是那么困难或耗时,但我只能在了解这些附加参数/参数时更新我的​​代码段。有没有一种规范的 R 方法可以做到这一点,或者至少是一种更简单的方法?

以防万一不清楚,我不是在谈论多个包提供指向相同统计或视图的函数的情况(例如,基本包中的“boxplot”;gplots 中的“boxplot.matrix”;和“bplots” ' 在 Rlab 中)。我所说的是函数名称在两个或多个包中相同的情况。

4

2 回答 2

5

sos ”包是一个极好的资源。它的主要接口是“ findFn ”命令,它接受一个字符串(您的搜索词)并扫描 Johnathan Baron 的站点搜索数据库中的“函数”条目,并返回包含数据框中的搜索词的条目(类“找到Fn”)。

此数据框的列是:CountMaxScoreTotalScorePackageFunctionDateScoreDescriptionLink。单击任何条目行中的“链接”将立即拉出帮助页面。

一个例子:假设你想在所有 1800+ R 包中找到所有卷积过滤器。

library(sos)
cf = findFn("convolve") 

这个查询看起来像术语“convolve”,换句话说,它不一定是函数名。

键入“cf”会返回找到的所有匹配项的 HTML 表(在本例中为 23 个)。该表是我刚才提到的数据框的 HTML 渲染。特别方便的是每列(“Count”、“MaxScore”等)都可以通过点击列标题进行排序,因此您可以通过“Score”、“Package Name”等查看结果。

(顺便说一句:运行该精确查询时,其中一个结果是名为“latticeExtra”的包中的函数“panel.tskernel”。我不知道这个包中有任何时间序列过滤器,我怀疑我会否则发现它。

于 2010-02-26T13:46:40.263 回答
1

你的问题不容易回答。没有一个确定的功能。

formals是将命名参数提供给函数的函数及其在命名列表中的默认值,但您始终可以通过...参数获得可变参数,并使用嵌入式hadArg函数隐藏命名参数。要获取这些列表,您必须使用 getAnywhere,然后扫描表达式以查找 hasArg。我想不出一种自动的方式来自己做。也就是说,如果没有记录函数隐藏参数。

于 2009-11-29T03:51:21.637 回答