快速读取非常大的表作为数据框
我有非常大的表(3000万行),我想将其作为R中的数据帧加载 read.table() 具有许多方便的功能,但似乎实现中有很多逻辑会减慢速度事情下来。 就我而言,我假设我提前知道了列的类型,该表不包含任何列标题或行名,并且没有任何我要担心的病理字符。 我知道使用 scan() 以列表的形式读取表的速度非常快,例如: datalist <- scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0))) 但是我将其转换为数据帧的一些尝试似乎使上述性能降低了6倍: df <- as.data.frame(scan('myfile',sep='\t',list(url='',popularity=0,mintime=0,maxtime=0)))) 有更好的方法吗? 还是完全不同的解决方法? #1楼 奇怪的是,即使这是很重要的问题,多年来也没有人回答问题的最底层部分 data.frame 只是具有正确属性的列表,因此,如果您有大量数据,则不想将其用作 as.data.frame 或类似的列表。 只需将列表“就地”转换为数据框就可以更快: attr(df, "row.names") <- .set_row_names(length(df[[1]])) class(df) <- "data.frame"