1

標準 (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 ベクトルを作成することはまったく可能ですか?

4

2 に答える 2

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 にあることもマークします。残りはすべてディスク上にあります。

于 2014-02-20T16:07:43.907 に答える
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ます。

于 2014-02-20T16:10:25.590 に答える