classIndex {Ecfun} | R Documentation |
Convert class to an integer 1-8 and vice versa
Description
classIndex
converts the class of x
to an integer:
NULL
logical
integer
numeric
complex
raw
character
other
index2class
converts an integer back to the
corresponding class.
Usage
classIndex(x)
index2class(i, otherCharacter=TRUE)
Arguments
x |
an object whose class index is desired. |
i |
an integer to be converted to the name of the corresponding class |
otherCharacter |
logical: TRUE to convert 8 to "character"; FALSE to convert 8 to "other". |
Details
The
Writing R Extensions lists six different kinds of "atomic
vectors": logical, integer, numeric, complex, character,
and raw: See also
Wickham
(2013, section on "Atomic vectors" in the chapter on
"Data structures"). These form a standard hierarchy,
except for "raw", in that standard operations combining
objects with different atomic classes will create an
object of the higher class. For example, TRUE +
2 + pi
returns a numeric object ((approximately
6.141593). Similarly, paste(1, 'a')
returns
the character string "1 a".
For "interpolation", we might expect users interpolating between objects of class "raw" (i.e., bytes) might most likely prefer "Numeric" to "Character" interpolation, coerced back to type "raw".
The index numbers for the classes run from 1 to 8 to make it easy to convert them back from integers to character strings.
Value
classIndex
returns an integer between 1 and 7
depending on class(x)
.
index2class
returns a character string for the
inverse transformation.
Author(s)
Spencer Graves
References
Wickham, Hadley (2014) Advanced R, especially Wickham (2013, section on "Atomic vectors" in the chapter on "Data structures").
See Also
Examples
##
## 1. classIndex
##
x1 <- classIndex(NULL)
x2 <- classIndex(logical(0))
x3 <- classIndex(integer(1))
x4 <- classIndex(numeric(2))
x5 <- classIndex(complex(3))
x6 <- classIndex(raw(4))
x7 <- classIndex(character(5))
x8 <- classIndex(list())
# check
all.equal(c(x1, x2, x3, x4, x5, x6, x7, x8), 1:8)
##
## 2. index2class
##
c1 <- index2class(1)
c2 <- index2class(2)
c3 <- index2class(3)
c4 <- index2class(4)
c5 <- index2class(5)
c6 <- index2class(6)
c7 <- index2class(7)
c8 <- index2class(8)
c8o <- index2class(8, FALSE)
# check
all.equal(c(c1, c2, c3, c4, c5, c6, c7, c8, c8o),
c('NULL', 'logical', 'integer', 'numeric',
'complex', 'raw', 'character', 'character',
'other'))