将data.frame转换为ff

将data.frame转换为ff,r,bigdata,R,Bigdata,我想将data.frame转换为ff对象,使用as.ffdf,如前所述 给出一个错误: Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered, : vmode 'numeric' not implemented 如果没有“vmode”参数,则会出现以下错误: Error in ff(initdata = initdata, length = length, levels = le

我想将data.frame转换为ff对象,使用as.ffdf,如前所述

给出一个错误:

Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,
: vmode 'numeric' not implemented
如果没有“vmode”参数,则会出现以下错误:

Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered, 
: vmode 'character' not implemented
写下表格,然后直接读入ff works,但是:

write.table(df.apr,file='df_apr.txt',sep='\t',row.names=F)
df.apr.ff=read.table.ffdf(file='df_apr.txt',header=F,VERBOSE=T)
但这很耗时[而且很笨拙]。
有更好的方法吗?

如果您想知道所有可能在ff中使用的vmodes,请在控制台键入以下内容

require(ff)
.vimplemented
您将看到数字和字符模式不在这些模式中。数字转换为双精度,字符转换为因子。因此,在您的问题中,您实际上不需要自己指定vmodes。只要字符编码为因子,就可以在data.frame上使用As.ffdf。因此,这将起作用

df.apr=as.data.frame(df.apr, stringsAsFactors=TRUE)
df_apr=as.ffdf(df.apr)

仅供参考。如果您的数据来自平面文件,请考虑使用Read .Table .FFDF,或者如果它来自SQL数据源,则可以使用EtLutILS包中的Read .dBi.FFDF或Read .Obc.FFDF。如果它是通过Hive从Hadoop来的,您可以使用ETLUtils包中的read.jdbc.ffdf。

没有数据很难帮助您,您可以
dput(head(df.apr))
?,您也测试过ffdf(ffdf(col1=as.ff(col1),…)正如链接中所建议的那样..?我的意思是@wijffelsData的解释来自GDELT。从4月份开始的这些每日更新已经是+/-0.9m记录。Data.table在这个16 GB RAM的linux debian 64位机器上运行[RStudio不用说再见就退出了]。我可以做dput(head(df.apr)),它给出了我所期望的58个变量的详细描述。没有尝试1对1的方法,因为解决方法更快/更简单[写入文件并作为ffdf读回]。我希望ffdf将很快包含更多模式。有时它可能真的很烦人
df.apr=as.data.frame(df.apr, stringsAsFactors=TRUE)
df_apr=as.ffdf(df.apr)