相关疑难解决方法(0)

快速读取非常大的表作为数据帧

我有非常大的表(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)

有没有更好的方法呢?或者很可能完全不同的方法来解决问题?

import r dataframe r-faq

489
推荐指数
9
解决办法
19万
查看次数

如何快速将数据加载到R?

我有一些R脚本,我必须尽快在R中加载几个数据帧.这非常重要,因为读取数据是程序中最慢的部分.例如:从不同的数据帧绘图.我以sav(SPSS)格式获取数据,但我可以将其转换为建议的任何格式.不幸的是,合并数据帧不是一个选项.

什么是加载数据的最快方法?我在考虑以下几点:

  • 第一次从sav转换为二进制R对象(Rdata),后来总是加载它,因为它看起来要快得多read.spss.
  • sav转换为csv文件并从主题中讨论的给定参数读取数据,
  • 或者是否值得在localhost上设置MySQL后端并从中加载数据?会更快吗?如果是这样,我还可以保存attr变量的任何自定义值(例如来自Spss导入文件的variable.labels)吗?或者这应该在一个单独的表中完成?

欢迎任何其他想法.感谢您提前提出的每一个建议!


我根据你给出的答案在下面做了一个小实验,并且还添加了(24/01/2011)一个非常"hackish"但非常快速的解决方案,只从一个特殊的二进制文件中加载几个变量/列.后者似乎是我现在能想象的最快的方法,这就是为什么我编写了一个名为save的小包来处理这个功能(05/03/2011:ver.0.3).该套餐正在"重"开发,欢迎任何推荐!

microbenchmark软件包的帮助下,我将很快发布一个具有准确基准测试结果的小插图.

performance benchmarking load r

36
推荐指数
2
解决办法
2万
查看次数

标签 统计

r ×2

benchmarking ×1

dataframe ×1

import ×1

load ×1

performance ×1

r-faq ×1