在预测对象中使用功能

时间:2018-07-14 16:14:50

标签: r

我正在尝试找出如何创建可在 R 的标准预测函数中使用的函数。

示例:

someFunction <- function(x){
                            vec <- 4
                            ans <- cbind(x, vec)
                            return(ans)
}

newIris <- predict(someFunction, iris)

我想这与 R 中的函数编程有关的 R 中的S3或S4类有关,但是我还没有找到关于此的简单解释问题。

1 个答案:

答案 0 :(得分:0)

predict通常不应用于函数。将其应用于预测模型。其中有许多不同类型,因此predict有许多不同版本。 methods(predict)将向您显示哪些类具有可用的预测功能。

methods(predict)
 [1] predict.ar*                predict.Arima*            
 [3] predict.arima0*            predict.glm               
 [5] predict.HoltWinters*       predict.lm                
 [7] predict.loess*             predict.mlm*              
 [9] predict.nls*               predict.poly*             
[11] predict.ppr*               predict.prcomp*           
[13] predict.princomp*          predict.smooth.spline*    
[15] predict.smooth.spline.fit* predict.StructTS* 

例如,如果您使用lm制作线性模型

LMI = lm(Sepal.Length ~ ., iris[,1:4])
class(LMI)
[1] "lm"

模型的类为lm,因此predict(LMI)将使用方法predict.lm。如果加载程序包,则可能会添加其他预测方法。例如,如果使用library(rpart)加载rpart软件包,则predict.rpart方法将被添加到列表中。

如果要定义自己的预测方法,则可能应该定义自己的模型类,然后创建特定于该类的预测方法。查看某些现有预测方法的源代码可能是一个好主意。因此,例如,尝试输入predict.lm

简而言之,predict查看对象(模型)的类并选择相应的预测方法。必须为要应用predict的每个类提供此预测方法。