本節書摘來自華章出版社《r語言資料分析》一書中的第1章,第1.2節,作者蓋爾蓋伊·道羅齊(gergely daróczi),潘怡 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
從平面檔案處理和導入一定規模的資料集到r還可以使用data.table包。該開發包文法格式與傳統基于s的r語言不同,它也擁有大量的參考文檔、頁面以及針對各類資料庫行為設計的令人印象深刻的優化操作的案例。我們将在本書第3章以及第4章中讨論類似應用和案例。
它提供了一個經使用者優化後的r函數來處理文本檔案:

相對之前的樣例,資料的導入速度非常快,算法的處理結果存放在特定的data.table類中,如果有必要可以将其轉換成傳統的data.frame類型:
或者使用setdf函數,該函數也提供了非常快速和恰當的對象轉換方法,這種轉換并不需要将資料先複制到記憶體中。同樣,也需要注意:
以上操作意味着data.table對象可以被當作data.frame類型并采用傳統方式對其進行處理。保持導入的資料格式不變還是将其轉換為data.frame類型要依據之後具體操作要求而确定。資料的聚集、合并和重構使用data.table格式的對象,其操作速度要比使用資料框這一标準的r資料格式更快。另外,使用者也需要了解data.table的資料格式文法,例如,dt[i, j, by]表示告訴r“用i來選出行的子集,并計算通過by來分組的j”,我們将在第3章讨論相關文法。
現在,讓我們比較一下之前提到的這些資料導入方法,到底它們有多快?最終的赢家看起來應該是data.table包中的fread函數。我們将通過設計下列測試函數來确定一些待測試的方法:
現在,為了節約一些時間,我們将以上這些函數各運作10次,而不是像之前進行數百次的疊代操作:
然後,按規定字型大小輸出測試結果:
注意,這裡我們處理的資料集大小都沒超過實際實體記憶體,其中一些開發包被設計為能夠處理大規模的資料集。這意味着,如果對read.table進行優化,能夠獲得比預設配置更好的處理性能。是以,如果要快速導入規模合适的資料集,推薦使用data.table包。