不知道大家有没有用read.table和read.csv读取过文件,当文件不大的时候你可能还感觉不出读取速度,但是当文件比较大的时候,比如有上万行的时候,你就会感觉到等待时间明显变长,甚至无法忍受。
今天小编给大家安利一个实用的R包data.table, 这个包可以明显的提升大文件的读取速度。下面我们就来做一个实验。我们随机生成一个100万行10列的文件,保存到你的电脑上,文件的大小可以达到173MB。接下来我们分别用传统的read.csv和data.table包里面的fread函数来读取这个超大的文件,然后比较两种方法的读取速度。
代码语言:javascript复制# 加载data.table包
library(data.table)
# 数据读取性能对比分析
# Create a large .csv file
set.seed(100)
m <- data.frame(matrix(runif(10000000), nrow=1000000))
write.csv(m, 'm2.csv', row.names = F)
# Time taken by read.csv to import
system.time({m_df <- read.csv('m2.csv')})
# Time taken by fread to import
system.time({m_dt <- fread('m2.csv')})
我们可以看到传统的read.csv读取该文件所需要的时间为48.84秒,而利用data.table包中的fread函数来读取只需要0.47秒,速度整整提升了100倍。
代码语言:javascript复制> # Time taken by read.csv to import
> system.time({m_df <- read.csv('m2.csv')})
用户 系统 流逝
48.84 1.09 50.72
> # Time taken by fread to import
> system.time({m_dt <- fread('m2.csv')})
用户 系统 流逝
0.47 0.08 0.31
大家赶紧试试吧!