首页 > 解决方案 > fread 读取数据结构的引号错误

问题描述

我有一个 5 G 的文件数据要加载。fread 似乎是一种加载它们的快速方法,但它读取了我所有的数据结构错误。看起来是导致问题的引号。

# Codes. I don't know how to put raw csv data here.   
dt<-fread("data.csv",header=T)
dt2<-read.csv("data.csv",header=T)
str(dt)
str(dt2)

这是输出。fread变量的所有数据结构都是char,不管是num还是char。

在此处输入图像描述 在此处输入图像描述

标签: rdata.table

解决方案


奇怪fread的是 id 列没有使用数字,也许某些条目包含非数字值?

文档建议使用colClasses参数。

dt <- fread("data.csv", header = T, colClasses = c("numeric", "character"))

该文档有使用此参数的警告:

类(命名或未命名)的字符向量,如 read.csv。或列名或数字向量的命名列表,请参阅示例。fread 中的 colClasses 旨在用于罕见的覆盖,而不是常规使用。如果 colClasses 请求它, fread 只会将列提升为更高的类型。它不会将列降级为较低的类型,因为会产生 NA。如果您确实需要数据丢失,您必须在之后自己强制这些列。


推荐阅读