友情提示:藍色下劃線字體為引文,請保持警惕!
1、既然 fread 函數在前文中已經被證實讀取.csv文件具有較高的效率,為什麼對於.xlsx或.xls文件,推薦使用readxl包中的 read_excel 函數呢?
答:在使用 fread 函數讀取前文提到的 經試驗驗證的人類miRNA靶基因信息.xlsx文件:
http://mirtarbase.mbc.nctu.edu.tw/cache/download/7.0/hsa_MTI.xlsx
時報錯:
Error in fread(datafile, sep = "\t") :Internal error: invalid head position. jump=1, headPos=0x112d06005, thisJumpStart=0x112e0b194, sof=0x112d06000
因為 fread 函數對.xlsx格式文件不支持,所以一般是要先轉換成.csv後讀取:
https://stackoverflow.com/questions/48313025/how-to-load-xlsx-file-using-fread-function
http://www.sthda.com/english/wiki/reading-data-from-excel-files-xls-xlsx-into-r
2、如何讀取壓縮的表格文件?
事情就很奇怪,拿到壓縮文件後的第一反應是解壓縮,然後是嘗試用excel打開查看,當發現文件過大,無法在excel裡查看及操作時,才想起使用R,隨之考慮用更高效的大文件讀取方法。慣性思維導致...反倒是忽略了直接用R讀取壓縮文件...
fread 函數對於壓縮文件,僅支持兩種格式:
Compressed files ending 『.gz』 and 『.bz2』 are supported if the 『R.utils』 package is installed.
即可以直接讀取.gz和.bz2的壓縮文件,不需要事先解壓。而想要讀取本例中的.zip格式,仍然面臨腳本可移植性問題:
https://stackoverflow.com/questions/33341010/fread-of-file-from-archive
好在,讀取.csv速度稍遜色一點的 read_csv 函數支持更多的壓縮格式:
Files ending in 『.gz』, 『.bz2』, 『.xz』, or 『.zip』 will be automatically uncompressed. Files starting with 『http://』, 『https://』, 『ftp://』, or 『ftps://』 will be automatically downloaded. Remote gz files can also be automatically downloaded and decompressed.
但,遇到壓縮文件中有多個子文件時,卻沒有參數可以設置具體讀取哪個解壓文件!
而最適於讀取.xlsx或.xls文件的 read_excel 函數不支持直接讀取壓縮文件!
綜上,R語言 | 讀取壓縮文件 中介紹的方法仍然具有其強大的包容性,即支持更多的壓縮格式及文件格式。值得注意的是,針對不同的壓縮格式,需要不同的函數,通過 help(gzfile) 可具體查看。
對於本例:
HuEx-1_0-st-v2.na36.hg19.probeset.csv.zip,我們最終可用以下命令完成壓縮文件的快速讀取:
zipfile = "HuEx-1_0-st-v2.na32.hg19.probeset.csv.zip"
zipf = unz(zipfile, "HuEx-1_0-st-v2.na32.hg19.probeset.csv") # 特定文件
data = as.data.frame(read_csv(zipf, comment = "#", col_names = T)) # 或fread
3、測試。
基於本文,或許你知道該如何回答如下幾個填空題~
A、基礎/不用加載額外R包的.csv文件讀取函數是 ___
B、讀取較大的.csv文件推薦使用函數 ___
C、讀取.xlsx或.xls文件推薦使用函數 ___
D、對於讀取只有一個data.csv文件壓縮得到的data.csv.gz,可以直接使用函數 ___
E、具有普遍適用性的讀取壓縮文件的方法,可參考推文 ___
後臺回復 R表格讀取 直接獲取答案!