2013-06-27 48 views
3

我的R應用程序從大型txt文件中讀取輸入數據。它不會一次性讀取整個 文件。用戶指定基因的名稱(每次3或4個),並根據用戶輸入,app進入適當的行並讀取數據。優化R中的文件讀取

文件格式:32,000行(每行一個基因,前兩列包含有關 基因名稱等信息)35,000列帶數字數據(十進制數字)。

我用read.table(filename,skip = 10,000)等去右行,然後讀取35000列的數據。然後我再次爲第二個基因,第三個基因(最多達4個基因) 做這個,然後處理數值結果。

文件讀取操作大約需要1.5到2.0分鐘。我正在試驗 閱讀整個文件,然後獲取所需基因的數據。

任何方式來加速這個?如果將來會加速閱讀操作,我可以用另一種格式(一個 時間處理)重寫基因數據。

+1

從包data.table中嘗試'fread'。 – Roland

+0

http://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r/15058684#15058684 – eddi

回答

2

如果您知道文件的確切格式,您可以使用colClasses參數到read.table來加快速度。對於2字符列和34,998(?)數字列,您可以使用

colClasses = c(rep("character",2), rep("numeric",34998)) 
2

如果您使用數據庫接口,這樣會更有效。通過RODBC軟件包可以找到幾個軟件包,但是一個與R完全集成的選項是sqldf軟件包,默認情況下它使用SQLite。然後,您可以使用數據庫的索引容量來查找正確的行並在一次操作中讀取所有列。