function - 如何检查 R 中对象类敏感函数的代码

标签 function r

我正在尝试编写一个函数来完成特定的工作(在我的例子中,分析数据集是否存在异常值),因此我想做的第一件事就是看看其他人是如何完成类似的工作的。

我可以这样做来加载特定的包并检查函数的代码,但有些函数似乎取决于您向其抛出的对象类

>library(outliers)
> fix(outlier)

function (x, opposite = FALSE, logical = FALSE) 
{
    if (is.matrix(x)) 
        apply(x, 2, outlier, opposite = opposite, logical = logical)
    else if (is.data.frame(x)) 
        sapply(x, outlier, opposite = opposite, logical = logical)
    else {
        if (xor(((max(x) - mean(x)) < (mean(x) - min(x))), opposite)) {
            if (!logical) 
                min(x)
            else x == min(x)
        }
        else {
            if (!logical) 
                max(x)
            else x == max(x)
        }
    }
}

如何查看根据对象而变化的代码?

编辑:

好的,手掌<-脸。我用作示例的函数只是调用自身,但所有代码都在那里......我看过其他示例(但想不出任何临时的),其中函数确实根据抛出的对象的类执行其他操作就这样,问题依然存在,尽管这是一个坏例子!

最佳答案

我查找函数代码的思维过程往往是:

首先,输入函数的名称

情况1:显示代码

太好了,你已经完成了。

示例:诊断

情况 2:该函数作为一行 UseMethod 语句出现

您有一个 S3 方法。 输入 methods(fnname) 查看可用的方法, 然后getAnywhere(fnname.myclass)

示例:平均值

methods(mean)
getAnywhere(mean.default)
情况 3:函数包含 .Internal 或 .Primitive 语句

该函数是用 C 编写的,以提高性能。 下载 R 源代码的副本并解压缩 tarball。 在 src 目录中搜索函数名称。

编辑:您还可以使用 Google 或 Yahoo 网站搜索来搜索该文件。

site:https://svn.r-project.org/R/trunk/src functionname

结束编辑

示例:qnorm

在 R 源代码的 src 目录中简单地在 Windows 中搜索“qnorm”,就会显示文件 qnorm.c,其中包含函数定义。

编辑: qnorm.c 也是搜索的顶部结果

site:https://svn.r-project.org/R/trunk/src qnorm

结束编辑

情况4:仍然找不到该功能

这可能是 S4 类的方法。

输入class(myobj)来查找该类。

输入 showMethods(class="myclass") 以查找该类的可用方法。

输入getMethods("fnname", "myclass")

示例:绘制像素图

这需要 pixmap 包。

library(pixmap)
pixie <- pixmap(1:12, nrow=3, ncol=4)
class(pixie)   #"pixmap"
showMethods(class="pixmap")
getMethod("plot", "pixmap")

关于function - 如何检查 R 中对象类敏感函数的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1439348/

相关文章:

python - 如何将类构造函数传递给 python 函数

python - 为什么我的 Python 函数没有被执行?

c# - Resharper 将我的私有(private)方法设为静态的建议是否是一个很好的建议?

c++ - 解析一个 int(x) 参数

r - 如何从 URL 读取表格并将其保存为数据框?

c++ - 虚函数——指针在哪里?

r - r 中的奇数或偶数

r - 使用字符串更改数据框列的类

r - 超过最大百分比的日期

R - 数据框切换行和列