R中的fread函数可以将一个大的.csv文件导入为一个数据框,并且只有一行。

10

我正在将一个大的 .csv 文件导入 R(大约 50 万行),因此我一直在尝试使用 data.table 包中的 fread() 作为 read.table() 和 read.csv() 的更快替代方法。然而,即使它具有正确数量的列,fread() 返回一个将所有行内数据合并成一行的数据框。我找到了一个 2013 年的错误报告,显示这与 integer64 数据类型有关:

http://r-forge.r-project.org/tracker/index.php?func=detail&aid=2786&group_id=240&atid=975

是否有任何修复方法或绕过此问题的方法?

我要读取的 .csv 文件完全是介于 0 到 10000 的整数,没有缺失数据。我在 Windows 7 计算机上使用 R 版本 2.15.2,以及 data.table 包的版本 1.8.8。

我正在运行的代码是:

require(data.table)
fread("pre2012_alldatapoints.csv", sep = ",", header= TRUE)-> pre
head(pre)

1: 1 22 -105 22 -105
2: 2 22 -105 22 -105
3: 3 20 -105 20 -105
4: 4 21 -105 21 -105
5: 5 21 -105 21 -105
6: 6 21 -105 21 -105

dim(pre)
[1] 12299  5 #dim returns the correct number of dimensions
#this is a subset of the file I want to import that I've confirmed imports correctly with read.csv
   
pre[,1]
[1] 1 #but trying to print a column returns this

length(pre[,1])
[1] 1 #and length for any column returns a row length of 1

pre[, 1] 现在返回第一列的子集,正如原始帖子中 OP 所期望的。 - MichaelChirico
1个回答

10

fread函数创建了一个data.table。相关的data.table包含多个vignettes,欲知更多请查看网站:https://rdatatable.gitlab.io/data.table/

事实上,自这个问题被发布以来,data.table内部已经发生了变化,使得pre[ , 1]现在可以按照最初期望的方式工作。


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