需要知道R中predict()和predict.lm()之间的区别
我不熟悉R和统计学。所以这个问题可能有点愚蠢,但我想知道R中的需要知道R中predict()和predict.lm()之间的区别,r,predict,R,Predict,我不熟悉R和统计学。所以这个问题可能有点愚蠢,但我想知道R中的predict()和predict.lm()之间是否有区别?我认为它们是相同的,但是如果是,为什么会有两个不同的函数呢?如果predict的第一个参数的类为“lm”,那么就没有区别了。例如,predict根据类的名称被分派到特定于类的版本。通过执行以下命令,可以查看加载的命名空间中存在的predict版本: methods(predict) 我目前加载了大量软件包,因此列表相当长: > methods(predict) [1
predict()
和predict.lm()
之间是否有区别?我认为它们是相同的,但是如果是,为什么会有两个不同的函数呢?如果predict
的第一个参数的类为“lm”,那么就没有区别了。例如,predict
根据类的名称被分派到特定于类的版本。通过执行以下命令,可以查看加载的命名空间中存在的predict版本:
methods(predict)
我目前加载了大量软件包,因此列表相当长:
> methods(predict)
[1] predict.ar* predict.areg
[3] predict.areg.boot predict.Arima*
[5] predict.arima0* predict.bj*
[7] predict.bs* predict.bSpline*
[9] predict.coxph* predict.coxph.penal*
[11] predict.cph* predict.dataRep
[13] predict.glm predict.Glm*
[15] predict.glmmPQL* predict.glmtree*
[17] predict.gls* predict.Gls*
[19] predict.gnls* predict.goodfit*
[21] predict.HoltWinters* predict.lda*
[23] predict.lm predict.lme*
[25] predict.lmList* predict.lmtree*
[27] predict.loess* predict.lqs*
[29] predict.lrm* predict.mca*
[31] predict.mlm predict.modelparty
[33] predict.nbSpline* predict.nlme*
[35] predict.nls* predict.npolySpline*
[37] predict.ns* predict.ols*
[39] predict.orm* predict.party*
[41] predict.pbSpline* predict.plm*
[43] predict.polr* predict.poly
[45] predict.polySpline* predict.ppolySpline*
[47] predict.ppr* predict.prcomp*
[49] predict.princomp* predict.psm*
[51] predict.pspline* predict.qda*
[53] predict.rlm* predict.Rq*
[55] predict.smooth.spline* predict.smooth.spline.fit*
[57] predict.StructTS* predict.survreg*
[59] predict.survreg.penal* predict.transcan
正如对
lm
所指出的,这是相同的,因为predict立即分派到predict.lm
,即
> predict
function (object, ...)
UseMethod("predict")
但是,一般来说,最好使用泛型函数(如predict
)而不是直接方法(在本例中为predict.lm
),因为在泛型函数内部进行一些操作/检查后,可以通过UseMethod
调用适当的方法。例如,as.data.frame
:
> as.data.frame
function (x, row.names = NULL, optional = FALSE, ...)
{
if (is.null(x))
return(as.data.frame(list()))
UseMethod("as.data.frame")
}
如果答案很简单,我可以问什么是“不可见”功能吗?我在底部收到一条消息
不可见的函数标有星号
。这是.foo
类型的隐藏函数吗?有些函数是“导出”的,有些则不是。如果要查看未从其命名空间导出的代码(假设已加载包含函数的包),请使用pkg\u name:::fn\u name
或getAnywhere(fn\u name)
。(不要把星号放在“fn_name”中。)我认为第二个比三重冒号运算符稍微强大一些,但我不知道:
的确切限制。有用getAnywhere
很不错。另请参见