您好,我有一个巨大的文件,想仅导入该文件的最后100行。如何使用read.csv()或其他替代方式实现?
包R.utils中有一个名为countLines()的函数。你可以这样写:
l2keep <- 10
nL <- countLines("your.csv")
df <- read.csv("your.csv", header=FALSE, skip=nL-l2keep)
如果你使用的是*nix系统,最好使用tail -n 100
命令来查看最后100行。如果使用R实现,处理大文件时速度会变慢,而且可能会非常慢。
如果你使用的是Windows系统,可以参考这个SO问题。
seek()
和其他“花哨”的功能,但是要找到与之一样快或简单的东西就需要好运了。 - ktdrv# read headers only
column_names <- as.vector(t(read.csv("your.csv", header=FALSE, colClasses='character', nrows=1)))
# then last n lines
l2keep <- 10
nL <- R.utils::countLines("your.csv")
df <- read.csv("your.csv", header=FALSE, col.names=column_names, skip=nL-l2keep)
read.csv
中的nrows
和skip
参数。例如,如果你有一个包含10000行的文件,并且只想导入最后100行,可以尝试以下方法:read.csv("yourfile.csv",nrows=100,skip=9900)
但如果你需要速度,也许最好使用@Ananda Mahto和@ktdrv提供的解决方案。
读取文件,使用tail函数 a<-read.csv('c:/..') tail(a,100L)
对我而言,快速且有效的方法是使用fread
读取大文件,同时设置select = 1
以仅读取第一列。然后再次使用fread
从所需行中读取数据。fread
比read.csv
或其他类似变体要快得多。有关fread
与read.csv
的更多信息,请参见此处:Reason behind speed of fread in data.table package in R
在read.csv()中给出适当的skip参数
fread
函数,然后只提取你需要的行。同样地,你也可以使用sqldf
函数。如果你在Unix系统上,你可以使用tail
命令来提高效率。 - A5C1D2H2I1M1N2O1R2T1