可能重复:
Reading the last n lines from a huge text file[R readlines方法读取文件的只有最后一行
我创建使用
con=file(path_of_myfile)
现在我想以一个文件的连接只读最后一行而不加载所有内容(这是一个巨大的文件)。
我想使用
?readLines
没有成功。
任何想法?
可能重复:
Reading the last n lines from a huge text file[R readlines方法读取文件的只有最后一行
我创建使用
con=file(path_of_myfile)
现在我想以一个文件的连接只读最后一行而不加载所有内容(这是一个巨大的文件)。
我想使用
?readLines
没有成功。
任何想法?
既然你是在Windows上,下载并安装邓肯Rtools如果你想自己构建R包,你将需要反正。 (如果你是在Linux上,那么唯一的区别是,你不需要下载任何东西,因为gawk
已经存在。)然后发出此R指令:
system("gawk 'END {print}' myfile", intern = TRUE)
系统中出现错误...: 'gawk'not found是否必须向PATH添加内容? – RockScience 2011-06-08 03:28:07
@Rockcience,假设Rtools在'C:\ Rtools'中,将'C:\ Rtools \ bin'添加到您的路径中。或者,使用'http:// batchfiles.googlecode.com'中的'Rgui.bat'来启动R(代替'Rgui.exe'),在这种情况下,它会自动将所需的目录添加到您的路径中R会议没有你必须改变任何事情。 – 2011-06-08 10:44:32
好的作品,谢谢你的帮助! – RockScience 2011-06-10 02:43:21
如果您在类Unix系统上运行你可能使用wc
计算行和R中,使用scan()
与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")
我很想在Unix上运行我的脚本,但是我不幸在Microsoft友好的环境中工作...... – RockScience 2011-06-07 11:20:18
对于'system(“wc -l”)'配方的+1。 – 2012-12-21 22:22:43
没有R 3具有像*什么寻求*功能? – 2011-06-07 11:02:07
这个问题不是http://stackoverflow.com/questions/5596107/reading-the-last-n-lines-from-a-huge-text-file的确切副本,因为这里对'n = 1'的限制导致潜在更简单的解决方案。这是因为当你点击文件末尾时,通常会有最后一行可用。 – 2011-06-10 02:24:17
@RockScience你有没有试过'count.felds()'?尝试'长度(count.fields(“foo.txt”))'。它应该是平台独立的,但它可能会更慢,因为它_counts fields_。 – Vulpecula 2011-08-05 21:10:55