[英]R: data.table fread on zip containing multiple files
在 zip 上使用fread
的與操作系統無關的解決方案是什么? 我似乎找不到一個。
Let's create two dataframes, write them to disk, and put them in a zip archive (I stole this from: How to zip multiple CSV files in R? )
library(zip)
df1 <- head(mtcars)
df2 <- head(iris)
write.csv(df1, 'df1.csv')
write.csv(df2, 'df2.csv')
zip(zipfile='df.zip', files=list.files(path = getwd(), pattern = ".csv$"))
假設我想從 zip 中讀取df1.csv 。
fread('df.zip/df1.csv')
fread 中的錯誤(“df.zip/df1.csv”):文件 'df.zip/df1.csv' 不存在或不可讀
我從存檔文件的 fread()嘗試了這個
fread('unzip -p df.zip/df1.csv')
Null data.table(0行0列)
警告信息:
In fread("unzip -p df.zip/df1.csv"): File '/var/folders/w5/kqy78qb17v176195dtyyc4pj40000gn/T//RtmpIlNSk8/filee1693cc7f89' has size 0. Returning a NULL data.table.
我不明白它試圖導入什么,但顯然不是我感興趣的 dataframe。
你能幫我嗎?
首先解壓縮不是一個真正的選擇。 在實踐中,我正在處理成批的高度可壓縮文件。 通常 ~ 3000 xls 文件,每個 1M 行。 100 Gb 未壓縮/8 Gb 壓縮。 不用說直接從 zip 中閱讀會更舒服!
安裝unzip
后,此解決方案可在我的計算機上運行:
fread(cmd = 'unzip -p df.zip df1.csv')
V1 mpg cyl disp hp drat wt qsec vs am gear carb
1: Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
2: Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
3: Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
4: Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
5: Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
6: Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.