我有一个庞大的数据框架。我根据两列对所有数据进行了分组。当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
。
要注意。
答案 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