我有非常大的表(3000万行),我想加载为R中的数据帧 read.table()有很多方便的功能,但似乎实现中有很多逻辑会减慢速度.在我的情况下,我假设我提前知道列的类型,表不包含任何列标题或行名称,并且没有任何我必须担心的病态字符.
我知道在表格中阅读作为列表使用scan()可能非常快,例如:
datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))
Run Code Online (Sandbox Code Playgroud)
但是我将此转换为数据帧的一些尝试似乎将上述性能降低了6倍:
df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))))
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?或者很可能完全不同的方法来解决问题?
我正在使用大型数据框,并且已经遇到RAM限制.此时,我可能需要在磁盘上使用序列化版本.有一些软件包支持内存不足的操作,但我不确定哪一个适合我的需求.我宁愿将所有内容保存在数据框中,因此ff包看起来很令人鼓舞,但仍然存在兼容性问题,我无法解决.
当您意识到数据已经达到内存不足时,第一个可以实现的工具是什么?
在分析R中的大型数据集时,我已达到RAM的极限.我认为我的下一步是将这些数据导入MySQL数据库并使用该RMySQL包.主要是因为我不知道数据库术语,我无法弄清楚如何超越安装MySQL几个小时的谷歌搜索和RSeeking(我在Mac OSX 10.6上运行MySQL和MySQL Workbench,但也可以运行Ubuntu 10.04 ).
如何开始使用这个用法有一个很好的参考?此时我不想做任何关系数据库.我只想将.csv文件导入到本地MySQL数据库中并使用RMySQL.进行子集化.
我很欣赏任何指针(包括"你离开基地!"因为我是R的新手并且是大型数据集的新手...这个大约80 mb)