| mode {base} | R Documentation |
Get or set the type or storage mode of an object.
mode(x) mode(x) <- value storage.mode(x) storage.mode(x) <- value
x |
any R object. |
value |
a character string giving the desired (storage) mode of the object. |
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.
The two replacement versions are currently identical. Both
mode(x) <- "newmode" and storage.mode(x) <- "newmode" change
the mode or storage.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".
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, the
replacement versions 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 calls have mode
"(" which is S compatible.
Modes have the same set of names as types (see typeof)
except that
"integer" and "double" are
returned as "numeric".
"special" and "builtin" are returned as
"function".
"symbol" is called mode "name".
"language" is returned as "(" or "call".
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
typeof for the R-internal “mode”,
attributes.
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(parse(text=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)