我想知道特定函数的公式是什么。通常当我输入不带括号的函数时,它会返回一个公式,所以如果我输入 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/