R中不同类型函数之间的差异

时间:2012-07-31 02:36:47

标签: r function

我很感激帮助理解R中几种类型函数之间的主要区别。

我在不同类型的函数的定义中有点不知所措,并且有些难以理解不同类型的函数如何相互关联。

具体来说,我对以下类型的函数之间的关系和差异感到困惑:

  1. Generic或Method :基于输入参数的类,使用Method Dispatch的泛型函数调用适当的方法函数。

  2. 隐形与可见

  3. 原始与内部

  4. 我对这些不同类型的功能如何相互关联(如果有的话)以及它们之间的各种差异和重叠感到困惑。

1 个答案:

答案 0 :(得分:2)

以下是有关原始与内部的一些文档:http://www.biosino.org/R/R-doc/R-ints/_002eInternal-vs-_002ePrimitive.html

泛型是可以应用于类对象的泛型函数。每个类都使用特定的方法编写,然后设置为通用。因此,您可以使用“methods”函数查看与通用调用关联的特定方法:

methods(print)

这将列出与通用“print”相关的所有方法。 或者,您可以通过此调用查看给定类具有的所有泛型

methods(,"lm")

其中lm是类线性模型。 这是一个例子:

x <- rnorm(100)
y <- 1 + .4*x + rnorm(100,0,.1)
mod1 <- lm(y~x)
print(mod1)
Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
       1.002        0.378  

print.lm(mod1)
Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
       1.002        0.378  

print(mod1)(通用调用)和print.lm(mod1)(对类的方法调用)都做同样的事情。为什么R这样做?我真的不知道,但这就是我理解的方法与通用之间的区别。