相关疑难解决方法(0)

如何使用fread功能读取CSV文件的特定行

我有一个大的CSV文件,它是double的(1000万乘500),我只想读入该文件的几千行(在1到1000万之间的不同位置),由V长度为1000万的二进制矢量定义,0如果我不想读取该行并且1我确实想读取该行,则假定为value 。

如何freaddata.table包中获取io函数来执行此操作?我问是因为fread与所有其他io方法相比是如此之快。

这个问题的最佳解决方案,读取大型矩阵数据文件的特定行,提供以下解决方案:

read.csv( pipe( paste0("sed -n '" , paste0( c( 1 , which( V == 1 ) + 1 ) , collapse = "p; " ) , "p' C:/Data/target.csv" , collapse = "" ) ) , head=TRUE)

其中C:/Data/target.csv是大型CSV文件,V0或的向量1

但是我已经注意到,这比简单地fread在整个矩阵上使用要慢几个数量级,即使该值V仅等于1总行数的一小部分。

因此,由于fread在整个矩阵上将主导上述解决方案,因此我该如何与行采样结合fread(特别是fread)?

这不是重复项,因为它仅与函数有关fread

这是我的问题设置: …

csv io performance r

3
推荐指数
1
解决办法
4343
查看次数

标签 统计

csv ×1

io ×1

performance ×1

r ×1