Hadley Wickham 和 RStudio團隊寫了一些新的R包,這些包對於每一個須要在R中讀入數據的人來講都是很是有用的。readr包提供了一些在R中讀入文本數據的函數。readxl包提供了一些在R中讀入Excel電子表格數據的函數。它們的讀取速度遠遠超過你目前正在用的一些函數。html
readr
包提供了若干函數在R中讀取數據。咱們一般會用R中的read.table
家族函數來完成咱們的數據讀入任務。這裏,readr
包提供了許多替代函數。它們增長了額外的一些功能而且速度快不少。git
首先,read_table
幾乎代替了read.table
。下面經過讀取一個包含400萬行的數據來比較它們的區別。點擊這裏下載該數據。github
注:在演示以前簡單說下我電腦的配置:win7,64位操做系統,8G內存,CPU A6雙核。電腦配置不行,原文給出的實驗時間甩了我好幾條街。但無論怎樣,在現有的條件下效率確實提升了不少。原文用時見末尾連接。函數
這些命令看上去很是類似,可是read.table
花的時間是50.62秒,而read_table
完成相同的任務只花了2.76秒。這是由於read_table
把數據當作是固定格式的文件,而且使用C++快速處理數據。操作系統
R中的基礎包utils
也有讀取固定寬度數據的函數,下面的示例就能體現出readr
的亮點:翻譯
readr
包的read_fwf
函數用時3.97秒,而標準的read.fwf
函數耗時1372秒。code
readr包中的其它函數包括:read_csv
讀取逗號分隔的數據(歐洲用的是read_csv2
函數),read_tsv
讀取製表符分隔數據,read_lines
函數從文件中逐行讀取數據(很是適合複雜的後期處理)。它還能夠讀取多種格式的日期時間列,智能的將文本數據讀取爲字符串(再也不須要設置strings.as.factors=FALSE
)。cdn
對於Excel格式的數據,這裏有readxl包。這個包提供的函數能夠讀取.xls和.xlsx格式的Excel工做表。雖然這裏沒有演示read_execl
函數的使用,可是它跟readr
中的函數同樣都是基於C++庫的,所以讀取速度應該也很快。最重要的是,它沒有任何的外部依賴,所以你能夠在任意平臺上用它來讀取數據—不要求安裝了Excel。htm
readr
包已發佈在CRAN上,readxl
能夠從github安裝。blog
本文由雪晴數據網負責翻譯整理,原文請參考New packages for reading data into R — fast做者David Smith。轉載請註明原文連接http://www.xueqing.cc/cms/article/102