正如标题所示,我正在尝试完全理解R的内存限制,因为我有一个规模迅速增长的项目,而且我担心内存限制很快将成为一个主要问题。
我知道object.size
,并且在环境中最大的项目上运行时会得到以下输出:
> object.size(raw.pbp.data)
457552240 bytes
...所以最大的项目是〜457MB。我还在“关于本机”->“存储”中检查了我的macbook pro的内存,它显示的内存为8 GB 1600 MHz DDR3
,因此我假设我有8 GB的内存可以使用。
很明显,457MB数据帧不是我的R环境中的唯一对象,但是我不想为每个对象手动运行object.size
并累加字节来查找所使用的内存总大小。有一个更好的方法吗?告诉我RStudio环境中所有对象总计使用的内存的功能将很棒。这样的功能存在吗?
此外,当我接近8GB时会发生什么-我的R脚本会停止工作吗?我预计我的数据将在不久的将来增加5到10倍,这可能会使环境中使用的总内存接近或超过8GB。
最后,如果要达到8GB的内存会使我的R脚本无法运行,我有什么选择?如果我将数据框转换为数据表,是否可以减少整个对象的大小?
对此非常感谢,谢谢!
编辑:另存为.rda
文件,raw.pbp.data
只有32MB,这使我很乐观,有一种方法可以减小加载到R中的大小
答案 0 :(得分:0)
我不知道任何功能,但是可以。您可以使用以下功能:
env <- eapply(environment(), object.size, USE.NAMES = FALSE)
sizes <- c()
for (i in 1:length(env)) {
sizes[i] <- env[[i]][1]
}
sum(sizes)
除了显而易见的(在服务器上运行或购买更多RAM)之外,我听说data.table
比data.frame
更有效率。尝试使用它。语法也更加简洁!我不能推荐data.table
。