如何将 .csv 文件的前 1000 行读入 R?

68

我有一个非常大的 .csv 文件,大约几个 GB 大小。
我想读取其中的前几千行。
有没有什么高效的方法可以做到这一点?


https://dev59.com/2nA75IYBdhLWcg3w0cfx?rq=1 - Francisco Corrales Morales
3
当我寻找如何解决同样的问题时,我反复遇到了这个问题。我希望在readr read.csv等中看到解决方案。从点击量、赞数和收藏数量来看,我认为重新开放这个问题会很有用? - pluke
2
这是一个非常合理的问题。我真的不明白为什么它被认为是“过于宽泛”。我们是否真的需要使用repex来编写大型csv文件,只是为了有些东西可以处理?读取文件的一部分的问题的本质是广泛的,而不是问题本身。 - jangorecki
1
请查看help("read.csv")中的参数nrows - Rui Barradas
我完全没有看到这个问题有任何问题。它非常好。 - gruvn
2个回答

103

使用read.csv(...)中的nrows参数。

df <- read.csv(file="my.large.file.csv",nrows=2000)

还有一个skip=参数,告诉read.csv(...)在开始读取之前要跳过多少行。

如果您的文件很大,最好使用data.table包中的fread(...)。相同的参数。


1
如果第一行是列名,则“跳过”不是很有用。 - Matthew Lundberg
3
在这种情况下,您可以使用scan()扫描第一行并将n设置为1,然后使用带有skip=参数的read.csv函数,并在此之后添加列名。 - Ari B. Friedman
4
对于(R 3.4.4,Win 7)的 read_csv 函数,选项是 n_max,请参阅文档(第6页)https://cran.r-project.org/web/packages/readr/readr.pdf。 - Peter
3
示例:read_csv(file="train.csv", n_max=2000) - Peter

20

如果您使用的是UNIX或OS/X系统,您可以使用命令行:

head -n 1000 myfile.csv > myfile.head.csv

那么就像平常一样在 R 中读取它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接