2012-08-01 27 views
1

是否有任何簡單的R函數從文本文件(* .txt或尤其是*)讀取特定行。 csv)沒有讀取整個文件到內存中?我想讀取文件的唯一選擇線路,例如讀取只有x1==b線:R下的文件(txt,csv)的低級訪問

x1 x2 x3 
a 1 1 
a 2 2 
b 2 3 
b 1 4 
a 2 1 
-> 
x1 x2 x3 
b 2 3 
b 1 4 

也許一些Perl的工具,R,但它很容易(對R用戶)?

+1

您可以使用'readLines'一次讀取塊...或'read.table'並設置'skip'和'nrows'參數...但是,如果您有權訪問外部過濾器(如Dirk在下面的建議),你可以說'grep「^ b」myfile.txt> body.txt; head -1 myfile.txt> header.txt; cat header.txt body.txt> small.txt' – 2012-08-01 16:10:59

+0

你可以在這裏找到一些有趣的解決方案ilposed.net - lazy.frame – 2012-08-01 16:58:14

+0

我會使用@ Ben的解決方案,但也看到這個:http://colbycol.r-forge.r -project.org/ – lockedoff 2012-08-01 20:35:07

回答

2

默認read.*函數默認情況下全部讀取所有內容。所以一種選擇是使用外部濾波器---例如awk或sed腳本或grep表達式---然後在經過篩選後通過read.table()從該流讀取。