对R中函数的重载分配感到困惑?

时间:2014-09-06 01:11:54

标签: r

对于在这种情况下调用哪个函数感到困惑,

# Simple linear model
g<-lm(final~midterm, stat500)

# Plot the predicted line, with slope and intercept
abline(g$coef, lty=5)

此代码段取自http://cran.r-project.org/doc/contrib/Faraway-PRA.pdf,第15页。 令人困惑的部分是调用abline。手册说呼叫签名是

用法:

 abline(a = NULL, b = NULL, h = NULL, v = NULL, reg = NULL,
        coef = NULL, untf = FALSE, ...)

和典型的用法是:

 abline(a, b, untf = FALSE, ...)
 abline(h =, untf = FALSE, ...)
 abline(v =, untf = FALSE, ...)
 abline(coef =, untf = FALSE, ...)
 abline(reg =, untf = FALSE, ...)

那么R如何解决abline(coef)应该被调用的那个?来自python世界,似乎通过提供没有名称的单个参数,应该使用第一个版本,即abline(a=g$coef, b=NULL)

有人可以在R中指出一个关于解决方案规则的好教程吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

?abline帮助页面。

  

第一种形式[abline(a, b, untf = FALSE, ...)]指定截距/斜率形式的线(或者a可以单独指定,并用于包含矢量形式的斜率和截距)。

因此,由于您正在进行简单的线性回归,g$coef是一个长度为2的向量,因此将这些值用作斜率和截距。

所以

之间没有区别
abline(a, b, untf = FALSE, ...)

abline(coef =, untf = FALSE, ...)

后者恰好有一个更明确的参数名称,如果你想使用它。如果只输入abline而没有括号,则可以轻松阅读abline的来源。只有一个abline函数(它甚至不是通用的)