首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ddply summarize内存不足

使用ddply summarize内存不足
EN

Stack Overflow用户
提问于 2013-07-14 00:34:10
回答 1查看 593关注 0票数 0

我有一个长格式的重复测量的大型数据框架(41764个观察值)。我正在尝试总结数据帧,并为每个不同的个体创建一个新的数据帧(总共有3112个观察值)。我正在使用ddply summarize,有关我的特定案例的更多背景信息,请访问New dataframe with difference between first and last values of repeated measurements?

我正在使用这个代码

代码语言:javascript
复制
df2 <- ddply(df1, .(indv), summarize, df1['value1'], df1['value2'])  

但是当我运行这个的时候,我得到了这个错误

代码语言:javascript
复制
Error: cannot allocate vector of size 991.6 Mb
In addition: Warning messages:
1: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)
2: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)
3: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)
4: In output[[var]][rng] <- df[[var]] :
Reached total allocation of 8088Mb: see help(memory.size)

我不确定如何解决这个问题。我尝试将所有内存驻留的数据帧保存为文件,关闭R,然后将这些数据帧重新导入R。这似乎确实节省了内存,至少在一开始是这样,但是在运行ddply summarize时,我仍然耗尽了RAM。

我在这台机器上有8 gb的RAM,所有这些都可以供R使用。有人知道我可以做些什么来解决这个问题吗?

也许我不应该使用ddply summarize,也许有更好的方法可以做到这一点?

编辑:看起来我可能发出了错误的命令。像这样的命令

代码语言:javascript
复制
df2 <- ddply(df1, .(indv), summarize, value1=(tail(value1, 1)), value2=(tail(value2, 1)), group=(tail(group, 1)))

似乎给出了我想要的结果。

EN

回答 1

Stack Overflow用户

发布于 2013-07-14 01:12:27

好的,多亏了LostBrit的帮助,我开始意识到我发出了错误的命令(或者我可能不清楚我首先想要做什么)。看起来这段代码给出了我想要的结果:

代码语言:javascript
复制
df2 <- ddply(df1, .(indv), summarize, 
       value1=tail(value1, 1), 
       value2=tail(value2, 1), 
       group =tail(group, 1))

感谢大家的帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17632100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档