我正在尝试将标准(RAM)字符向量转换为ff对象(向量)。下面的代码返回错误:
> as.ff(c('a', 'b'))
Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,:
vmode 'character' not implemented
这个帖子(https://stackoverflow.com/questions/17744525/r-difficulties-facing-with-read-csv-ffdf-physicalmode-and-virtualmode)表明ff对象根本不接受字符,只接受因素。不过,下面的内容不起作用:
> as.ff(c('a', 'b'), vmode = 'factor')
Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,:
vmode 'factor' not implemented
下面的列表不包括'因素':
.vimplemented
boolean logical quad nibble byte ubyte short ushort
TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
integer single double complex raw character
TRUE TRUE TRUE FALSE TRUE FALSE
那么可以创建一个字符的ff矢量吗?
答案 0 :(得分:3)
当然,在ff中,没有实现纯字符向量。因素是。由于c('a','b')是一个字符,因此无法将其转换为ff。但是当然可以将因子转换为ff。
require(ff)
class(c('a', 'b'))
[1] "character"
class(factor(c('a', 'b')))
[1] "factor"
as.ff(factor(c('a', 'b')))
ff (open) integer length=2 (2) levels: a b
[1] [2]
a b
class(as.ff(factor(c('a', 'b'))))
[1] "ff_vector" "ff"
还要标记因子级别在RAM中。所有其余的都在磁盘上。
答案 1 :(得分:1)
只需在变量上调用factor
:
as.ff(factor(c('a', 'b')))
ff (open) integer length=2 (2) levels: a b
[1] [2]
a b
在内部,因素是整数,
storage.mode(factor(c('a', 'b')))
[1] "integer"
具有映射到字符表示的levels
属性。如您所述,ff
支持整数。