vmode.rdFunction vmode returns virtual storage modes of 'ram' or 'ff' objects, the generic vmode<- sets the vmode of ram objects (vmode of ff objects cannot be changed).
vmode(x, ...)
vmode(x) <- value
# Default S3 method
vmode(x, ...)
# S3 method for class 'ff'
vmode(x, ...)
# Default S3 method
vmode(x) <- value
# S3 method for class 'ff'
vmode(x) <- value
regtest.vmode()vmode is generic with default and ff methods. The following meta data vectors can be queried by .vmode or .ffmode:
.vmode | virtual mode |
.vunsigned | TRUE if unsigned vmode |
.vvalues | number of possible values (incl. NA) |
.vimplemented | TRUE if this vmode is available in ff (initialized .onLoad and stored in globalenv ) |
.rammode | storage mode of this vmode |
.ffmode | integer used to code the vmode in C-code |
.vvalues | number of possible integers incl. NA in this vmode (or NA for other vmodes) |
.vmin | min integer in this vmode (or NA for other vmodes) |
.vmax | max integer in this vmode (or NA for other vmodes) |
.vNA | NA or 0 if no NA for this vmode |
.rambytes | bytes needed in ram |
.ffbytes | bytes needed by ff on disk |
.vcoerceable | list of vectors with those vmodes that can absorb this vmode |
the following functions relate to vmode:
vector.vmode | creating (ram) vector of some vmode |
as.vmode | generic for coercing to some vmode (dropping other attributes) |
vmode<- | generic for coercing to some vmode (keeping other attributes) |
maxffmode | determine lowest .ffmode that can absorb all input vmodes without information loss |
some of those call the vmode-specific functions:
| creation | coercion | vmode description |
boolean | as.boolean | 1 bit logical without NA |
logical | as.logical | 2 bit logical with NA |
quad | as.quad | 2 bit unsigned integer without NA |
nibble | as.nibble | 4 bit unsigned integer without NA |
byte | as.byte | 8 bit signed integer with NA |
ubyte | as.ubyte | 8 bit unsigned integer without NA |
short | as.short | 16 bit signed integer with NA |
ushort | as.ushort | 16 bit unsigned integer without NA |
integer | as.integer | 32 bit signed integer with NA |
single | as.single | 32 bit float |
double | as.double | 64 bit float |
complex | as.complex | 2x64 bit float |
raw | as.raw | 8 bit unsigned char |
character | as.character | character |
vmode returns a character scalar from .vmode or "NULL" for NULL rambytes returns a vector of byte counts required by each of the vmodes
regtest.vmode checks correctness of some vmode features
data.frame(.vmode=.vmode, .vimplemented=.vimplemented, .rammode=.rammode, .ffmode=.ffmode
, .vmin=.vmin, .vmax=.vmax, .vNA=.vNA, .rambytes=.rambytes, .ffbytes=.ffbytes)
#> .vmode .vimplemented .rammode .ffmode .vmin .vmax .vNA
#> boolean boolean TRUE logical 1 0 1 0
#> logical logical TRUE logical 2 0 1 NA
#> quad quad TRUE integer 3 0 3 0
#> nibble nibble TRUE integer 4 0 15 0
#> byte byte TRUE integer 5 -127 127 NA
#> ubyte ubyte TRUE integer 6 0 255 0
#> short short TRUE integer 7 -32767 32767 NA
#> ushort ushort TRUE integer 8 0 65535 0
#> integer integer TRUE integer 9 -2147483647 2147483647 NA
#> single single TRUE double 10 NA NA NA
#> double double TRUE double 11 NA NA NA
#> complex complex FALSE complex 12 NA NA NA
#> raw raw TRUE raw 13 0 255 0
#> character character FALSE character 14 NA NA NA
#> .rambytes .ffbytes
#> boolean 4 0.125
#> logical 4 0.250
#> quad 4 0.250
#> nibble 4 0.500
#> byte 4 1.000
#> ubyte 4 1.000
#> short 4 2.000
#> ushort 4 2.000
#> integer 4 4.000
#> single 8 4.000
#> double 8 8.000
#> complex 16 16.000
#> raw 1 1.000
#> character 4 NA
vmode(1)
#> [1] "double"
vmode(1L)
#> [1] "integer"
.vcoerceable[["byte"]]
#> [1] 5 7 9 10 11
.vcoerceable[["ubyte"]]
#> [1] 6 7 8 9 10 11 13