0
我想用read.csv
在R
中讀取大文件。現在,獲取與某種模式匹配的行的一種方法是首先獲取data-frame
中的所有行,然後僅過濾所需的行。這種方法的問題是文件太大,所有數據可能無法放入某些機器的內存中。那麼有沒有什麼辦法可以使用grep
或類似的東西,read.csv
只能提取幾行有意思的東西?如何使用read.csv來只讀那些與正則表達式匹配的行?
我想用read.csv
在R
中讀取大文件。現在,獲取與某種模式匹配的行的一種方法是首先獲取data-frame
中的所有行,然後僅過濾所需的行。這種方法的問題是文件太大,所有數據可能無法放入某些機器的內存中。那麼有沒有什麼辦法可以使用grep
或類似的東西,read.csv
只能提取幾行有意思的東西?如何使用read.csv來只讀那些與正則表達式匹配的行?
您不能使用read.table
及其派生物用於此目的。但是,您可以使用readLines
來讀取區塊中的數據,並將正則表達式應用於每條對應於一條線的元素。
另一種選擇是使用類似框架的數據庫。 Package sqldf
可以將csv文件讀入SQL數據庫。您可以使用SQL查詢來只讀取所需的行。
您可以在shell /終端中使用'grep'(或'awk')過濾掉某些行,發送到一個新文件,然後將該文件讀入R.否則,您可以通過塊讀取數據,然後過濾大塊 – 2014-10-12 05:31:44
感謝您的幫助@RichardScriven。我正在查看'R'中是否有任何東西可以使用'read.csv'和'regex'或類似的東西。 – Sangram 2014-10-12 05:36:33
你可以用'data.table'中的'fread'使用shell命令。見例如http://stackoverflow.com/questions/22229109/r-data-table-fread-command-how-to-read-large-files-with-irregular-separators舉例說明。 – 2014-10-12 20:47:34