我想知道从存档文件中读取data.table
的推荐方法是什么(在我的情况下是zip存档)。一个显而易见的选择是将其解压缩到一个临时文件,然后像往常一样fread()
。我不想打扰创建新文件,因此我使用read.table()
连接中的unz()
,然后将其转换为data.table()
:
mydt <- data.table(read.table(unz(myzipfilename, myfilename)))
这种方法很好但read.table()
对于大文件来说速度很慢,而fread()
无法直接读取unz()
连接。我想知道是否有更好的解决方案。
答案 0 :(得分:11)
看看:Read Ziped CSV File with fread 为了避免tmp文件,你可以使用解压缩-p提取文件来管道,没有消息
你可以在fread中使用这种语句。
+----------+----------+----------+
|antecedent|consequent|confidence|
+----------+----------+----------+
|[t,s,y] |[x] |1.0 |
|[t,s,y] |[z] |1.0 |
|[y,x,z] |[t] |1.0 |
|[y] |[x] |1.0 |
|[y] |[z] |1.0 |
|[y] |[t] |1.0 |
|[p] |[r] |1.0 |
|[p] |[z] |1.0 |
|[q,t,z] |[y] |1.0 |
|[q,t,z] |[x] |1.0 |
|[q,y] |[x] |1.0 |
|[q,y] |[z] |1.0 |
|[q,y] |[t] |1.0 |
|[t,s,x] |[y] |1.0 |
|[t,s,x] |[z] |1.0 |
|[q,t,y,z] |[x] |1.0 |
|[q,t,x,z] |[y] |1.0 |
|[q,x] |[y] |1.0 |
|[q,x] |[t] |1.0 |
|[q,x] |[z] |1.0 |
+----------+----------+----------+
only showing top 20 rows
或使用gunzip
x = fread('unzip -p test/allRequests.csv.zip')
您也可以使用grep或其他工具。