2014-05-12 59 views
0

我有這個龐大的文件,它有一堆條目。我只想讀取包含某些值的條目,如「db_call」。如何解析某個文本的大文件

我已經試過這樣:

df<-read.table(text=readLines("H:/ap.log")[grepl("db_call")]) 

我得到這個錯誤:

參數 「X」 的缺失,沒有默認設置

什麼想法?

+0

你不能使用xpath或xquery嗎? –

+0

@Fede,我不熟悉那些,是r包嗎? – user1471980

+0

你可以在這裏檢查http://stackoverflow.com/questions/4870207/xpath-within-r-using-xml-package –

回答

5

創建一個測試文件:

writeLines(c("aaa 11","aaa 22","bbb 33"),con="test.txt") 

蠻力法(主要是你在上面想盡了辦法)是整個事情閱讀,然後只取件你想:

xx <- readLines("test.txt") 
xx <- xx[grepl("aaa",xx,fixed=TRUE)] 
## (fixed=TRUE is slightly faster if you don't need regular expressions) 
read.table(text=xx) 

如果你有一個大文件,我建議在系統級使用grep(如果需要的話,安裝Cygwin,因爲你似乎在使用Windows)並使用pipe,例如

測試 - 看看有多少行包含的目標字符串:

system('grep "aaa" <text.txt | wc') 

只讀方含aaa線:

read.table(pipe('grep "aaa" <test.txt')) 

這將是比讀整個事情成R更有效,然後選擇你想要的部分。

+0

只是好奇...你怎麼能從OP的問題中看出使用Windows? –

+0

他們的文件路徑是'H:/ ap.log',這對我來說看起來很漂亮。 –

+0

Gotcha。是的,我只是轉向基於Linux的,所以我仍然在學習差異。 –