我正在尝试使用“ff”包中的函数read.table.ffdf()读取一个大小约为20G的非常大的.csv文件,但在read.csv中指定colClasses选项时遇到了麻烦( )。
我必须指定colClasses选项,因为文件中的某些列是非常长整数的标签,例如有11位数。例如,文件中的两行是
86246,205,17,1719,104116343,8435,2013-03-13,12,OZ,1,2.59
86246,205,17,1719,10800749282,8435,2013-03-13,12,OZ,1,2.59
整数10800749282对于“整数”类型来说太大,只能作为“数字”或“字符”处理。但是上面一行中的值104116343不够大,因此默认情况下R会将此列视为“整数”。
我尝试了以下但是出错了。有谁知道如何解决这个问题?非常感谢!
dat <- read.table.ffdf(file="file.csv", FUN = "read.csv", na.strings = "", colClasses="character")
ff出错(initdata = initdata,length = length,levels = levels, ordered = ordered ,:vmode'character'未实现
答案 0 :(得分:0)
正如您的错误所示,在ff环境中没有实现“字符”数据类型。所有字符都应视为因子。假设您的文件包含 x 列数,则以下内容有效:
dat <- read.csv.ffdf(NULL, file="file.csv", na.strings = "", colClasses=rep("factor", x))
但是,您可能需要不将所有数据作为因素导入,因为效率非常低。只需将所有数值数据导入为“数字”。假设您的第一个 5 列是数字,其余 3 是字符:
dat <- read.csv.ffdf(NULL, file="file.csv", na.strings = "", colClasses=c(rep("numeric", 5), rep("factor", 3)))