Я бы использовал scan
для этого, если вы знаете, сколько строк в журнале:
scan("foo.txt",sep="\n",what="char(0)",skip=100)
Если вы не знаете, сколько вам нужно пропустить, у вас нет выбора, кромечтобы перейти к
- чтению во всем и взятию последних n строк (если это возможно),
- с использованием
scan("foo.txt",sep="\n",what=list(NULL))
для определения количества записей или - используя некоторый алгоритм для просмотра файла, каждый раз сохраняя только последние n строк
Последний параметр может выглядеть следующим образом:
ReadLastLines <- function(x,n,...){
con <- file(x)
open(con)
out <- scan(con,n,what="char(0)",sep="\n",quiet=TRUE,...)
while(TRUE){
tmp <- scan(con,1,what="char(0)",sep="\n",quiet=TRUE)
if(length(tmp)==0) {close(con) ; break }
out <- c(out[-1],tmp)
}
out
}
, позволяющий:
ReadLastLines("foo.txt",100)
или
ReadLastLines("foo.txt",100,skip=1e+7)
, если вы знаете, что у вас более 10 миллионов строк.Это может сэкономить время чтения, когда вы начинаете иметь очень большие журналы.
РЕДАКТИРОВАТЬ: На самом деле, я бы даже не использовал R для этого, учитывая размер вашего файла.В Unix вы можете использовать команду tail .Для этого есть версия для Windows, где-то в наборе инструментов.Я еще не пробовал это.