r - 如何查看函数内部的函数的作用?

标签 r function

我想知道特定函数的公式是什么。通常当我输入不带括号的函数时,它会返回一个公式,所以如果我输入 sd 我会得到:

function (x, na.rm = FALSE) 
{
    if (is.matrix(x)) 
        apply(x, 2, sd, na.rm = na.rm)
    else if (is.vector(x)) 
        sqrt(var(x, na.rm = na.rm))
    else if (is.data.frame(x)) 
        sapply(x, sd, na.rm = na.rm)
    else sqrt(var(as.vector(x), na.rm = na.rm))
}
<environment: namespace:stats>

这很好。但是如果我在加载了 zoo 包的情况下键入 rollmean,它会返回:

function (x, k, fill = if (na.pad) NA, na.pad = FALSE, align = c("center", 
    "left", "right"), ...) 
{
    UseMethod("rollmean")
}
<environment: namespace:zoo>

我猜 rollmean 方法中发生了什么,但我如何才能看到其中发生了什么?这可能是一个新手问题,但我很难找到如何查看特定函数的基础公式。

最佳答案

两种选择:

1) 按照 Nick Sabbe 的建议,使用方法机制。请注意,它非常危险,因为它在很大程度上取决于类、泛型和方法的实现方式以及它在哪个面向对象框架(S3、S4、R5)中。

# List all methods, S3 here
print(methods(rollmean))

  [1] rollmean.default rollmean.ts*     rollmean.zoo*   
  Non-visible functions are asterisked

# Get each of them
getAnywhere("rollmean.default")
getAnywhere("rollmean.ts")
getAnywhere("rollmean.zoo")

2)直接找R源。因为它是一个包,所以很容易:找到包的 .tar.gz 版本,查找“R”目录,您将找到源代码(以及开发人员的注释,如果有的话)。对于动物园:http://cran.r-project.org/src/contrib/zoo_1.7-6.tar.gz

关于r - 如何查看函数内部的函数的作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8121670/

相关文章:

r - 将日期时间转换为格式化的时间字符串

r - 给定某些约束条件 R 选择大小为 k 的最优子集

c - 我在 main 中正确调用我的函数吗?

c - 指向函数的常量指针数组

r:readr:write_csv 如何压缩文件?

指定 alpha 颜色时,地毯图不起作用?

c - 是否有任何特定原因表明函数调用不应用于 C 中的变量初始值设定项

function - 将类型信息传递给 Scala 中的函数

c++ - 如何添加返回 3 个数字的函数,而不仅仅是 1 个

r - 将 Shiny 应用程序中的焦点设置为加载时的特定 UI 元素