R readLines只读取文件的最后一行

时间:2011-06-07 10:59:40

标签: r

  

可能重复:
  Reading the last n lines from a huge text file

我已使用

创建了与文件的连接
con=file(path_of_myfile)

现在我想只读最后一行而不加载所有内容(它是一个巨大的文件)。

我正在尝试使用

?readLines

没有成功。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

由于您使用的是Windows,因此如果您想自己构建R软件包,请下载并安装Duncan的Rtools,无论如何都需要它。 (如果你在Linux上,那么唯一的区别是你不需要下载任何东西,因为gawk已经存在。)然后发出这个R命令:

system("gawk 'END {print}' myfile", intern = TRUE)

答案 1 :(得分:5)

如果您在类似unix的系统上运行,则可以使用wc计算行数,并使用scan()参数在R中使用skip

lastline <- function(filename) {
  ## filename is of mode character
  out <- system(sprintf("wc -l %s",filename),intern=TRUE)
  n <- as.integer(sub(sprintf("[ ]*([0-9]+)[ ]%s",filename),"\\1",out))
  print(n)
  scan(filename,what="",skip=n-1,nlines=1,sep="\n",quiet=TRUE)
}

> lastline("myfile")