R lm函数错误:无法分配大小为8.4 Mb的向量

时间:2014-05-10 07:55:32

标签: r data.table lm

我有一个庞大的数据框架。我根据两列对所有数据进行了分组。当lm函数与ddply一起使用时出现问题我收到错误Error: cannot allocate vector of size 8.4 Mb 。但是,当我将它用作mean的其他功能时,它可以完美地运行。 你能给我一些解决这个问题的东西吗,也许是另一个函数而不是ddply? 我按顺序使用了最大限制

    memory.limit(size=4000)

以下是一个例子:

                 a<- seq(1, 1000, 1)
                 b<- seq(2,1001,2)
                 c<- c(rep(1,250), rep(2, 250), rep(3,250), rep(4,250))
                 d<- c(rep(5,250), rep(6, 250), rep(7,250), rep(8,250))
                 df<-data.frame(a,b,c,d)

               dafr<-dlply( df, .(c,d ) , lm, formula= (a~b ))

我将数据框转换为data.table所遇到的帮助,但我不知道如何在lm框架中使用data.table

要注意。

1 个答案:

答案 0 :(得分:2)

如果您只需要系数,可以试试这个:

library(data.table)
setDT(df)
dafr <- df[, as.list(lm.fit(cbind(1, b), a)$coef), by=list(c, d)]
setnames(dafr, c("c", "d", "intercept", "slope"))
#   c d    intercept slope
#1: 1 5 1.869449e-13   0.5
#2: 2 6 5.176935e-13   0.5
#3: 3 7 5.000000e+02   0.5
#4: 4 8 5.000000e+02   0.5