mode
The (Storage) Mode of an Object
Description
Get or set the type or storage mode of an object.
Usage
mode(x) mode(x) <- value storage.mode(x) storage.mode(x) <- value
Arguments
x | any R object. |
value | a character string giving the desired mode or ‘storage mode’ (type) of the object. |
Details
Both mode
and storage.mode
return a character string giving the (storage) mode of the object — often the same — both relying on the output of typeof(x)
, see the example below.
mode(x) <- "newmode"
changes the mode
of object x
to newmode
. This is only supported if there is an appropriate as.newmode
function, for example "logical"
, "integer"
, "double"
, "complex"
, "raw"
, "character"
, "list"
, "expression"
, "name"
, "symbol"
and "function"
. Attributes are preserved (but see below).
storage.mode(x) <- "newmode"
is a more efficient primitive version of mode<-
, which works for "newmode"
which is one of the internal types (see typeof
), but not for "single"
. Attributes are preserved.
As storage mode "single"
is only a pseudo-mode in R, it will not be reported by mode
or storage.mode
: use attr(object, "Csingle")
to examine this. However, mode<-
can be used to set the mode to "single"
, which sets the real mode to "double"
and the "Csingle"
attribute to TRUE
. Setting any other mode will remove this attribute.
Note (in the examples below) that some call
s have mode "("
which is S compatible.
Mode names
Modes have the same set of names as types (see typeof
) except that
-
types
"integer"
and"double"
are returned as"numeric"
. -
types
"special"
and"builtin"
are returned as"function"
. -
type
"symbol"
is called mode"name"
. -
type
"language"
is returned as"("
or"call"
.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
See Also
typeof
for the R-internal ‘mode’, type.convert
, attributes
.
Examples
require(stats) sapply(options(), mode) cex3 <- c("NULL", "1", "1:1", "1i", "list(1)", "data.frame(x = 1)", "pairlist(pi)", "c", "lm", "formals(lm)[[1]]", "formals(lm)[[2]]", "y ~ x","expression((1))[[1]]", "(y ~ x)[[1]]", "expression(x <- pi)[[1]][[1]]") lex3 <- sapply(cex3, function(x) eval(str2lang(x))) mex3 <- t(sapply(lex3, function(x) c(typeof(x), storage.mode(x), mode(x)))) dimnames(mex3) <- list(cex3, c("typeof(.)","storage.mode(.)","mode(.)")) mex3 ## This also makes a local copy of 'pi': storage.mode(pi) <- "complex" storage.mode(pi) rm(pi)
Copyright (©) 1999–2012 R Foundation for Statistical Computing.
Licensed under the GNU General Public License.