R:openxlsx和sqldf
我有一个关于使用R从Excel读取文件的问题。 我正在阅读Excel工作表中的几个选项卡,并执行一些基本的sql命令并使用sqldf合并它们。 我的问题是我的内存在读取Excel数据后陷入了很多困境。 我可以运行该程序,但不得不安装8GB的内存不使用像我的可用内存的80%。
我知道如果我有一个文本文件,我可以直接使用read.csv.sql()读取它,并在“读取”命令中执行sql,这样我的RAM就不会陷入困境。 我也知道你可以将表保存为tempfile(),所以它不占用RAM空间。 使用sqldf的汇总数据没有太多的行,所以不会导致内存不足。
我所能想出的唯一解决scheme是设置一个R程序,它只读取数据并创build文本文件。 closuresR,运行第二个程序,使用sqldf从文本文件中读取它并执行SQL命令并合并数据。 我不太喜欢这个解决scheme,因为它仍然涉及在初始读入程序中使用大量的RAM,并使用2个程序,我只想使用1。
我也可以从Excel选项卡手动创build文本文件,但是目前有些更新是定期进行的,所以我宁愿不必这样做。 另外我想要更自动化的东西来创build文本文件。
作为参考,这些表格是以下大小的4个表格:
- 3k行×9列
- 200K x 20
- 4k x 16
- 80k x 13
- 100K x 12
我的阅读是这样的:
table<-read.xlsx(filename, sheet="Sheet") summary<-sqldf("SQL code") rm(table) gc()
我已经尝试在每次读入和sql操作之后运行rm(table)和gc()命令(之后我不再需要整个表),但是这些命令似乎没有释放太多的RAM。 只有通过closuresR会话,我会得到1-2 GB的。
那么有什么办法可以把Excel文件读入R,而不是在这个过程中占用RAM吗? 我也想注意到这是在一台工作电脑上,我没有pipe理员权限,所以我想要安装的任何东西,我将不得不从IT要求这是我想避免的障碍。