11

嗨,我有一个很大的文件,我只想从该文件中导入最后 100 行。我们如何使用 read.csv() 或任何替代方法来做到这一点?

4

7 回答 7

23

包 R.utils 有一个名为 countLines() 的函数。你可以这样做:

l2keep <- 10
nL <- countLines("your.csv")
df <- read.csv("your.csv", header=FALSE, skip=nL-l2keep)
于 2013-08-30T16:41:30.787 回答
3

如果您在 *nix 系统上,最好使用该tail -n 100命令获取最后 100 行。在 R 中实现的任何东西都会变慢,并且可能会慢得多,因为您的文件确实很大。

如果您使用的是 Windows,您可能想看看这个 SO question

于 2013-08-30T06:45:55.513 回答
2

如果您也想包含标题,请改进@lauratboyer 的答案:

# 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)
于 2018-06-26T15:29:51.360 回答
1

nrows您可以skipread.csv. 例如,如果您有一个包含 10000 行的文件,并且您只想导入最后 100 行,您可以试试这个:

read.csv("yourfile.csv",nrows=100,skip=9900)

但是,如果您想要的是速度,那么使用@Ananda Mahto 和@ktdrv 提供的解决方案可能会更好

于 2013-08-30T06:48:40.423 回答
0

对我有用的快速而肮脏的方式 - 用于fread在设置时读取大文件,select = 1以便只读取第一列。然后fread再次使用从所需行读取数据。比或其他类似变体Fread快得多。read.csv更多关于freadvsread.csv这里:R中data.table包中fread速度的原因

于 2017-10-08T18:27:50.563 回答
0

读取文件,使用tail函数 a<-read.csv('c:/..') tail(a,100L)

于 2019-01-03T12:35:01.857 回答
-1

在 read.csv() 中给出适当的跳过参数

于 2015-06-10T16:52:31.623 回答