我尝试在大型数据集上运行多个线性回归。基本上biglm工作得很好。现在我尝试找到一种方便的方法来自动创建我的公式,使用一个向量,包含我的因变量和一个字符串,包含我公式的其余部分。这两个字符串都是我的公式。 这适用于lm()但使用biglm()
会导致错误可重现的例子:
library(biglm)
data<-data.frame(av=c(1,2,3,4,5,6,5,4,5,5),
uv1=c(1,2,5,5,4,56,3,4,5,6),
uv2=c(4,5,8,3,2,7,6,2,4,6),
weight=c(1.2,1,1,1,1,1,1,1,0,0))
dependent<-c('av')
independent<-'~ uv1 + uv2 -1'
formula<-paste(dependent[1],independent)
#this works fine
lm_standard<-lm(formula,data=data,weights=weight)
#and this works fine
lm_big1<-biglm(av~uv1+uv2-1,data=data,weights=~weight)
#and here comes the error
lm_big<-biglm(formula,data=data,weights=~weight)
错误:$运算符对原子矢量无效
我不使用as.formula(),因为我不知道如何将-1添加到as.formula()对象中。我对as.formula()问题的解决方法导致错误消息。是否有可能a)使用缺少拦截的as.formula()或b)以某种方式粘贴公式,biglm()可以理解吗?
答案 0 :(得分:3)
lm
会自动将合适的对象强制转换为formula
个对象,而biglm
则不会。你自己做吧....
lm_big<-biglm( as.formula( formula ) ,data=data,weights=~weight)