数据表 fread 函数

17

我正在使用新的 data.table:::fread 函数(目前我在 R 中使用的最快速的读取函数),并且我得到了以下(自解释的)异常:

R) fread(path)
Erreur dans fread(path) : Coercing integer64 to real needs to be implemented

我的文件(是一个用制表符分隔的CSV文件)确实包含像902160000671352000这样的大整数。我的问题是,我能否告诉fread不要读取第二列(其中包含那些怪兽般的整数)?


1
可能更容易告诉 fread 将这些列读取为字符或因子。然后你就有了数据,随时可以进行类型转换。 - Carl Witthoft
我目前的解决方案是使用 cut -f1,3- myFile.txt Unix 命令,然后运行 fread... - statquant
help(fread)指出,bit64::integer64类型也可以直接检测和读取,而无需先将其作为字符读取再转换。我正在使用32位操作系统(XP)。这是个问题吗?我能把这些int64转换成char吗? - statquant
3
文档中没有明显的信息;由于这个函数是软件包开发版本中的新功能,与维护者联系似乎是一个不错的主意...(总的来说,让 fread 允许使用 colClasses 参数似乎也是个好主意:即使大多数情况下自动检测非常出色,但总会有一些需要手动修改的情况(包括跳过列,这在 colClasses 对应元素为 NULL 时实现)(@CarlWitthoft: 主意很好,但看起来你还不能在 fread 中这样做。[暂时还不能]). - Ben Bolker
使用“drop”选项怎么样? - skan
1个回答

11

好问题。现在还不能,但是你将能够。同意所有评论。

readfile.c源代码的顶部有一个待办事项列表。如果有任何遗漏,请让我知道。该列表包括允许类型覆盖,实施未实现的强制转换和允许跳过列。希望这些都能在1.9.0的第一个版本中完成。

fread目前在正在开发的R-Forge上的v1.8.7中。完成后会作为1.9.0发布到CRAN。 ".0"表示新功能可能会更改参数名称和行为;即,不要惊讶如果在1.9.1中对fread进行了向后不兼容的更改。考虑到它的特性,很难想象任何重大变化会发生,但这就是为什么我公布了它在R-Forge上的可用性,以便尽早推出并正确处理类似的事情。


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