我试图使用speedlm
(speedglm package)的更新选项,因为我没有足够的RAM一次计算整个模型,而biglm
只使用一个CPU。
下面的代码是出错的可重现示例。Speedlm更新“需要呼叫组件的对象”
library(speedglm)
formula <- Sepal.Length ~ Sepal.Width
chunk1 <- iris[1:10,]
chunk2 <- iris[11:20,]
chunk3 <- iris[21:30,]
lmfit <- speedlm(formula, chunk1)
lmfit <- update(lmfit, chunk2)
lmfit <- update(lmfit, chunk3)
,我发现了以下错误:
> lmfit <- speedlm(formula, chunk1)
> lmfit <- update(lmfit, chunk2)
> lmfit <- update(lmfit, chunk3)
Error in update.default(lmfit, chunk3) :
need an object with call component
>
如果是由于有update
代替updateWithMoreData
我已经期待着与chunk2更新后的错误。
想知道解决这个问题的方法,或者如果我必须使用替代方法。
在此先感谢!
使用updateWithMoreData
得到以下错误:
> lmfit <- speedlm(formula, chunk1)
> lmfit <- updateWithMoreData(lmfit, chunk2)
Error: object of type 'symbol' is not subsettable
> lmfit <- updateWithMoreData(lmfit, chunk3)
Error: object of type 'symbol' is not subsettable
>
下面的代码工作,道具@LyzandeR
> library(speedglm)
> chunk1 <- iris[1:10,]
> chunk2 <- iris[11:20,]
> chunk3 <- iris[21:30,]
> lmfit <- speedlm(Sepal.Length ~ Sepal.Width, chunk1)
>
> for (i in list(11,20, 21:30)){
+ lmfit2 <- updateWithMoreData(lmfit, iris[i,])
+ }
> lmfit2
Linear Regression Model of class 'speedlm':
Call: speedlm(formula = Sepal.Length ~ Sepal.Width, data = chunk1)
Coefficients:
(Intercept) Sepal.Width
2.9876 0.5813
>
也许你想'updateWithMoreData'?根据文档,'update.speedlm'需要一个公式作为第二个参数。 – Roland
@Roland谢谢,我完全错过了文档中的那个。但它不能解决问题。更新我的问题 – Bas