我有這個龐大的文件,它有一堆條目。我只想讀取包含某些值的條目,如「db_call」。如何解析某個文本的大文件
我已經試過這樣:
df<-read.table(text=readLines("H:/ap.log")[grepl("db_call")])
我得到這個錯誤:
參數 「X」 的缺失,沒有默認設置
什麼想法?
我有這個龐大的文件,它有一堆條目。我只想讀取包含某些值的條目,如「db_call」。如何解析某個文本的大文件
我已經試過這樣:
df<-read.table(text=readLines("H:/ap.log")[grepl("db_call")])
我得到這個錯誤:
參數 「X」 的缺失,沒有默認設置
什麼想法?
創建一個測試文件:
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更有效,然後選擇你想要的部分。
只是好奇...你怎麼能從OP的問題中看出使用Windows? –
他們的文件路徑是'H:/ ap.log',這對我來說看起來很漂亮。 –
Gotcha。是的,我只是轉向基於Linux的,所以我仍然在學習差異。 –
你不能使用xpath或xquery嗎? –
@Fede,我不熟悉那些,是r包嗎? – user1471980
你可以在這裏檢查http://stackoverflow.com/questions/4870207/xpath-within-r-using-xml-package –